Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите с оптимизацией запросов / 8 сообщений из 8, страница 1 из 1
03.08.2013, 23:32:08
    #38354099
Ginza9
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с оптимизацией запросов
Добрый день, коллеги!
Есть несколько запросов, которые работают совершенно неоптимально.

1. SELECT *,ps.price as special,p.price as price,pd.name,pd.brief,p.product_id,p.image FROM product_special ps LEFT JOIN product p ON p.product_id = ps.product_id LEFT JOIN product_description pd ON p.product_id = pd.product_id USE INDEX( idx ) WHERE ( DATE(NOW())BETWEEN ps.date_start AND ps.date_end ) AND p.quantity > 0 - результаты explain: читаются все строки, using where
2. SELECT *,p.main_category_id as category_id, count(*) as counter,op.product_id FROM order_product op LEFT JOIN product p ON op.product_id = p.product_id LEFT JOIN product_description pd ON op.product_id = pd.product_id GROUP BY op.product_id HAVING p.quantity > 0 AND category_id = '85' ORDER BY counter DESC LIMIT 1 - результат explain: читаются все данные таблицы, using temporary, using filesort.

Индексы по всем полям, участвующим в условиях, созданы.
Рад любой помощи.
...
Рейтинг: 0 / 0
03.08.2013, 23:48:03
    #38354104
Помогите с оптимизацией запросов
Ginza9,

осталось посмотреть планы, чтобы убедиться, что индексы используются... А также понять - а нужны ли они...
...
Рейтинг: 0 / 0
03.08.2013, 23:50:22
    #38354106
Помогите с оптимизацией запросов
оу, ты так классно оформил сообщение, что я и не сразу заметил примечания о результатах эксплейна.
...
Рейтинг: 0 / 0
03.08.2013, 23:50:31
    #38354107
Ginza9
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с оптимизацией запросов
Добрый Э - Эх,

как посмотреть план?
...
Рейтинг: 0 / 0
04.08.2013, 00:10:46
    #38354113
javajdbc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с оптимизацией запросов
Ginza9Добрый Э - Эх,

как посмотреть план?

поставьте слово EXPLAIN перед запросом и
читать, например, тут:
http://xpoint.ru/know-how/MySQL/Optimizatsiya/Indeksyi#EXPLAINSELECT
...
Рейтинг: 0 / 0
04.08.2013, 00:27:58
    #38354117
Ginza9
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с оптимизацией запросов
Изучаю сейчас запросы с помощью программы Neor Profile SQL. Все равно пока не удается победить их.
...
Рейтинг: 0 / 0
04.08.2013, 10:17:16
    #38354179
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с оптимизацией запросов
Ginza9,

Дебилы запросы писали.
Сначала приведи все к нормальному ввиду, потом уже будешь думать о оптимизации. Хинты все тоже убрать.
...
Рейтинг: 0 / 0
04.08.2013, 10:31:35
    #38354183
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с оптимизацией запросов
Ginza9Добрый день, коллеги!
Есть несколько запросов, которые работают совершенно неоптимально.

1.
Код: sql
1.
2.
3.
4.
5.
6.
SELECT *,ps.price as special,p.price as price,pd.name,pd.brief,p.product_id,p.image 
FROM product_special ps 
LEFT JOIN product p ON p.product_id = ps.product_id 
LEFT JOIN product_description pd ON p.product_id = pd.product_id USE INDEX( idx ) 
WHERE ( DATE(NOW())BETWEEN ps.date_start AND ps.date_end ) 
AND p.quantity > 0

- результаты explain: читаются все строки, using where
2.
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT *,p.main_category_id as category_id, count(*) as counter,op.product_id 
FROM order_product op 
LEFT JOIN product p ON op.product_id = p.product_id 
LEFT JOIN product_description pd ON op.product_id = pd.product_id 
GROUP BY op.product_id 
HAVING p.quantity > 0 AND category_id = '85' 
ORDER BY counter DESC LIMIT 1

- результат explain: читаются все данные таблицы, using temporary, using filesort.

Индексы по всем полям, участвующим в условиях, созданы.
Рад любой помощи.
1
- условие p.quantity > 0 делает из LEFT JOIN product p - inner
и это - SELECT *,ps.price ... - "за гранью понимания" - ВЫБРАТЬ ВСЁ+кое-что выбрать 2-а раза ...
2
то же самое, что и 1. про условия в HAVING,
и не нужен тут HAVING - условия перенеси в WHERE
нуу и SELECT * при GROUP BY op.product_id - плохо характеризует ТС ... )
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите с оптимизацией запросов / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]