|
По планам
|
|||
---|---|---|---|
#18+
Подрезюмирую. После разных экспериментов, пришёл к выводу, что единственный вариант - ситуативное отключение индексов по +0. Заменить FOREIGN KEY на триггеры, т.е. убрать плохие индексы совсем, тоже не панацея. Плохие индексы тоже могут приносить пользу. Ниже привожу пример. Пример. Запрос на заполнение всё той же таблицы (статистика индексов остается та же, распределение данных по полю "id" немного другое): Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Тестовый запрос: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
С плохим индексом Plan PLAN (TBL INDEX (TBL_IDX_ID)) PLAN (TBL INDEX (TBL_IDX_ID)) PLAN (TBL INDEX (TBL_IDX_ID)) PLAN (TBL INDEX (TBL_IDX_ID)) PLAN (TBL INDEX (TBL_IDX_ID)) Prepare time = 0ms Execute time = 156ms Current memory = 28 270 576 Max memory = 32 234 688 Memory buffers = 3 000 Reads from disk to cache = 0 Writes from cache to disk = 0 Fetches from cache = 6 335 Без индекса Plan PLAN (TBL NATURAL) PLAN (TBL NATURAL) PLAN (TBL NATURAL) PLAN (TBL NATURAL) PLAN (TBL NATURAL) Prepare time = 0ms Execute time = 7s 718ms Current memory = 28 218 880 Max memory = 32 234 688 Memory buffers = 3 000 Reads from disk to cache = 0 Writes from cache to disk = 0 Fetches from cache = 25 646 715 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2020, 19:50 |
|
По планам
|
|||
---|---|---|---|
#18+
ggreggory Заменить FOREIGN KEY на триггеры, т.е. убрать плохие индексы совсем, тоже не панацея. Это вообще идея так себе. Триггеры работают в контексте транзакции, т.е. видеть могут далеко не всё. FK работают вне транзакций. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2020, 04:17 |
|
|
start [/forum/topic.php?fid=40&msg=40012839&tid=1560211]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
59ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 158ms |
0 / 0 |