powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите с оптимизацией запросов
8 сообщений из 8, страница 1 из 1
Помогите с оптимизацией запросов
    #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
Помогите с оптимизацией запросов
    #38354104
Ginza9,

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

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

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

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

Дебилы запросы писали.
Сначала приведи все к нормальному ввиду, потом уже будешь думать о оптимизации. Хинты все тоже убрать.
...
Рейтинг: 0 / 0
Помогите с оптимизацией запросов
    #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
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите с оптимизацией запросов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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