|
Почему перестает использоваться индекс?
|
|||
---|---|---|---|
#18+
Есть комплексный запрос по многим таблицам для выбора требуемой информации: Код: 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. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41.
Его EXPLAIN с закомментированными строками: idselect_typetablepartitionstypepossible_keyskeykey_lenrefrowsfilteredExtra1SIMPLEd\Nreffk_contr;i_peri_per4const37994100.00Using where; Using temporary; Using filesort1SIMPLEc\Neq_refPRIMARY;fk_mkdPRIMARY4direct_contracts.d.id_contragent1100.00Using where1SIMPLEm\Neq_refPRIMARY;uk_acc;mk_sbl;fk_streetPRIMARY4direct_contracts.c.id_mkd1100.00Using where1SIMPLEs\Neq_refPRIMARYPRIMARY4direct_contracts.m.id_street1100.00\N1SIMPLEdn\Nreffk_contr;i_perfk_contr5direct_contracts.d.id_contragent9100.00Using where1SIMPLEclaims\Nreffk_claims_idcfk_claims_idc5direct_contracts.d.id_contragent1100.00Using where1SIMPLEn\Neq_refPRIMARY;i_dfPRIMARY4direct_contracts.d.id_contragent1100.00Using where1SIMPLEns\Nreffk_ns_mkd;i_perfk_ns_mkd4direct_contracts.c.id_mkd1100.00Using where Но, если раскомментировав строки, добавить к запросу выборку из еще одной таблицы, получаем такой EXPLAIN: idselect_typetablepartitionstypepossible_keyskeykey_lenrefrowsfilteredExtra1SIMPLEs\NindexPRIMARYi_name123\N72100.00Using index; Using temporary; Using filesort1SIMPLEm\NrefPRIMARY;uk_acc;mk_sbl;fk_streetmk_sbl5direct_contracts.s.id4100.00\N1SIMPLEc\NrefPRIMARY;fk_mkdfk_mkd5direct_contracts.m.id69100.00Using index1SIMPLEd\Nreffk_contr;i_perfk_contr5direct_contracts.c.id918.25Using where1SIMPLEdn\Nreffk_contr;i_perfk_contr5direct_contracts.c.id9100.00Using where1SIMPLEclaims\Nreffk_claims_idcfk_claims_idc5direct_contracts.c.id1100.00Using where1SIMPLEn\Neq_refPRIMARY;i_dfPRIMARY4direct_contracts.c.id1100.00Using where1SIMPLEns\Nreffk_ns_mkd;i_perfk_ns_mkd4direct_contracts.m.id1100.00Using where1SIMPLEa\Nreffk_agr_cid;i_dffk_agr_cid5direct_contracts.c.id1100.00Using where Почему так радикально изменяется использование индексов? Перестают использоваться первичные ключи, а для таблицы "s" стал вообще использоваться индекс по текстовому полю. LEFT JOIN по agreements ничем не отличается от аналогичных LEFT JOIN по claims или notifications , да и agreements имеет аналогичные поля и индексы, как claims или notifications . В чем может быть причина, куда "копать"? Не уверен нужны ли DDL таблиц, но покажу при необходимости... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2019, 14:53 |
|
Почему перестает использоваться индекс?
|
|||
---|---|---|---|
#18+
Попробуйте обновить статистику для таблиц agreements и data_sgrc . Попробуйте поместить этот LEFT JOIN непосредственно после FROM data_sgrc d . ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2019, 14:59 |
|
Почему перестает использоваться индекс?
|
|||
---|---|---|---|
#18+
Akina, Перестановка джойна не помогла, но Код: sql 1. 2.
помог. Теперь EXPLAIN такой: idselect_typetablepartitionstypepossible_keyskeykey_lenrefrowsfilteredExtra1SIMPLEd\Nreffk_contr;i_peri_per4const37994100.00Using where; Using temporary; Using filesort1SIMPLEc\Neq_refPRIMARY;fk_mkdPRIMARY4direct_contracts.d.id_contragent1100.00Using where1SIMPLEm\Neq_refPRIMARY;uk_acc;mk_sbl;fk_streetPRIMARY4direct_contracts.c.id_mkd1100.00Using where1SIMPLEs\Neq_refPRIMARYPRIMARY4direct_contracts.m.id_street1100.00\N1SIMPLEdn\Nreffk_contr;i_perfk_contr5direct_contracts.d.id_contragent10100.00Using where1SIMPLEclaims\Nreffk_claims_idcfk_claims_idc5direct_contracts.d.id_contragent1100.00Using where1SIMPLEn\Neq_refPRIMARY;i_dfPRIMARY4direct_contracts.d.id_contragent1100.00Using where1SIMPLEns\Nreffk_ns_mkd;i_perfk_ns_mkd4direct_contracts.c.id_mkd1100.00Using where1SIMPLEa\Nreffk_agr_cid;i_dffk_agr_cid5direct_contracts.d.id_contragent1100.00Using where Спасибо! Понять бы еще, как часто/когда делать обновление статистики... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2019, 15:15 |
|
Почему перестает использоваться индекс?
|
|||
---|---|---|---|
#18+
LiYing Понять бы еще, как часто/когда делать обновление статистики... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2019, 15:21 |
|
|
start [/forum/topic.php?fid=47&msg=39901302&tid=1828817]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
190ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 294ms |
0 / 0 |