Разное время выполнения запроса к большой базе

Steamroller

Новичок
А вот здесь уже простым созданием индексов не выкрутиться. Надо в структуру вмешиваться.
Если данные в этих трех таблицах не часто обновляются - то можно ничего и не делать, только включить query cache. Разик потормозит, потом до следующего обновления будет мгновенно отдаваться.
Если это не подходит, то самое простое будет скопировать или перенести поле element.name в таблицу offer, сделать в offer индекс (producer, name, element), ну и в запросе вместо element.name использовать offer.name.
 

Ekklipce

Новичок
где и кто включает query_cache ?

данные будут часто обновляться в element и offer

врядли будет копироватся element.name в offer..
ну индекс и так можно поробовать в оффер сделать

без изменения структуры путем каких то индексов в offer ничего не получится ?
 

Steamroller

Новичок
где и кто включает query_cache ?
Тот, кто админит сервер mysql, в настройках.
данные будут часто обновляться в element и offer
Тогда плохо, кеш сбрасывается при каждом обновлении.
без изменения структуры путем каких то индексов в offer ничего не получится ?
Неа, не получится.
 

Ekklipce

Новичок
:(

-~{}~ 12.10.05 16:21:

касательно element.name и offer.name

есть имя и там и там...! просто берется element.name и offer.producer, но если ключ (producer, name, element) (кстати именно в таком порядке ?) поможет, скорее всего оно будет автоматически заменено

-~{}~ 12.10.05 16:27:

сделал именно такой ключ, запрос изменил element.name на offer.name (имя такое уже было) - 0 на массу..
то есть ничего..
explain говорит что в element идёт полный перебор

напомню запрос :

SELECT offer.id AS id, element.name AS name, offer.producer AS producer, element.params AS params, offer.price AS price, supplier.min_offer AS min_offer, supplier.name AS supplier, offer.store_count AS store, offer.period AS period, offer.min_count AS min_package
FROM offer, element, supplier
WHERE element.id = offer.element AND supplier.id = offer.supplier
ORDER BY producer, name ASC
 

Steamroller

Новичок
Ну вот в нем надо ORDER BY offer.producer, offer.name ASC
И смотреть, какой explain, и как долго будет запрос выполняться.
Ключ можно (producer, name) просто сделать.
 

Ekklipce

Новичок
без ключа (producer, name)

без ORDER BY producer, name ASC
запрос просто летает,

с ORDER BY producer, name ASC - 14 секунд

с ключем

без ордера - летает
с ордером - 32 секунды :)

неужели сортировка так много ресурсов жрет.. или можно как то по другому отсортировать
 

chira

Новичок
неужели сортировка так много ресурсов жрет.. или можно как то по другому отсортировать
как тебе сказали попробуй вместо ORDER BY producer, name ASC
поставить ORDER BY offer.producer, offer.name ASC (с алиасами)
если MySQL решит использовать индекс (producer, name), то не будет тратится время на дополнительную сортировку
 
Сверху