Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Помогите оптимизировать запросы.
|
|||
|---|---|---|---|
|
#18+
Есть запрос: Код: sql 1. EXPLAIN дает Код: plaintext 1. 2. 3. Код: plaintext 1. 2. 3. p.s Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2017, 21:45 |
|
||
|
Помогите оптимизировать запросы.
|
|||
|---|---|---|---|
|
#18+
bigbrother72, Для начала надо разобраться с логикой запроса. Либо уберите слово LEFT, либо условие cd.language_id = '2' перенесите в условие соединения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2017, 23:42 |
|
||
|
Помогите оптимизировать запросы.
|
|||
|---|---|---|---|
|
#18+
miksoft, Логика такая: Таблица category содержит category_id ссылку на родительскую категорию c.parent_id sort_order - сортировка, указанная руками в таблице (если заполнена - сортируем по этому полю) status - показывать категорию или нет. Таблица category_description - здесь описание категорий. category_id language_id - язык описания категории - 1 русский, 2 - английский name - само описание категорий (Яблоки,Бананы,Груши с language_id=1) (Apple,Banana etc с language_id=2) Из двух таблиц выбираются данные отсортированные по c.sort_order из первой таблицы и LCASE(cd.name) из второй таблицы. Таблицы связаны через c.category_id = cd.category_id Условия выбора еще: Родительская категория c.parent_id Язык описания категории cd.language_id Статус c.status ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2017, 08:29 |
|
||
|
Помогите оптимизировать запросы.
|
|||
|---|---|---|---|
|
#18+
Order By выражение - это ВСЕГДА filesort, каких индексов не накрути... Впрочем, если у тебя версия 5.7.6 или старше, можно использовать вычисляемые поля. См. https://dev.mysql.com/doc/refman/5.7/en/create-table-generated-columns.html и https://dev.mysql.com/doc/refman/5.7/en/generated-column-index-optimizations.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2017, 08:40 |
|
||
|
Помогите оптимизировать запросы.
|
|||
|---|---|---|---|
|
#18+
bigbrother72language_id - язык описания категории - 1 русский, 2 - английскийВ таком случае условие cd.language_id = '2' просто ОБЯЗАНО находиться в секции ON. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2017, 08:41 |
|
||
|
Помогите оптимизировать запросы.
|
|||
|---|---|---|---|
|
#18+
возможно наличие описания на нужном языке является обязательным, тогда можно избавиться от "left". еще я бы убрал `name` из первичного ключа, ибо не вижу там в этом поле другой пользы, кроме вреда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2017, 09:19 |
|
||
|
Помогите оптимизировать запросы.
|
|||
|---|---|---|---|
|
#18+
Akinabigbrother72language_id - язык описания категории - 1 русский, 2 - английскийВ таком случае условие cd.language_id = '2' просто ОБЯЗАНО находиться в секции ON. А где про это можно почитать? Я как-то думал, что в ON условия связывания ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2017, 11:48 |
|
||
|
Помогите оптимизировать запросы.
|
|||
|---|---|---|---|
|
#18+
paverА где про это можно почитать? Я как-то думал, что в ON условия связывания www.mysqldiary.com/mysql-left-join/ в случае left join-а в ON надо включать все условия, связанные с "левой" таблицей, записи в которой могут отсутствовать по условию связывания. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2017, 13:09 |
|
||
|
Помогите оптимизировать запросы.
|
|||
|---|---|---|---|
|
#18+
хотя конечно вот так Код: sql 1. тоже сработает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2017, 13:16 |
|
||
|
Помогите оптимизировать запросы.
|
|||
|---|---|---|---|
|
#18+
paverЯ как-то думал, что в ON условия связыванияНе только связывания, но и пред-отбора (отбора, выполняемого ДО связывания), в то время как во WHERE находятся условия отбора, выполняемые ПОСЛЕ связывания. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2017, 13:50 |
|
||
|
Помогите оптимизировать запросы.
|
|||
|---|---|---|---|
|
#18+
AkinaOrder By выражение - это ВСЕГДА filesort, каких индексов не накрути... Почему же? вот так например упростим пока: SELECT * FROM category c WHERE c.parent_id = '47' AND c.status = '1' ORDER BY c.sort_order добавим индекс "index2" по полям parent_id, status, sort_order теперь explain нам говорит: авторid select_type table partitions type possible_keys key key_len ref rows filtered Extra 1 SIMPLE c NULL ref parent_id,status,index2 index2 5 const,const 7 92.19 Using index condition пока не могу сообразить, как использовать в запросе два индекса из двух таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2017, 18:45 |
|
||
|
Помогите оптимизировать запросы.
|
|||
|---|---|---|---|
|
#18+
bigbrother72, хотя это не индекс, а Using index condition получилось ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2017, 18:48 |
|
||
|
Помогите оптимизировать запросы.
|
|||
|---|---|---|---|
|
#18+
bigbrother72 , и где тут, позвольте узнать, выражение? Измените на какой-нибудь ORDER BY c.sort_order +1 и попробуйте избавиться от filesort. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2017, 19:30 |
|
||
|
Помогите оптимизировать запросы.
|
|||
|---|---|---|---|
|
#18+
DarkripplepaverА где про это можно почитать? Я как-то думал, что в ON условия связывания www.mysqldiary.com/mysql-left-join/ Показательно, спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2017, 06:52 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=68&tid=1830449]: |
0ms |
get settings: |
12ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
14ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 272ms |
| total: | 392ms |

| 0 / 0 |
