|
|
|
Индексы
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! предположим планируется создать индекс из 2-х полей, - одно с высокой селективностью, другое - с низкой. С одной стороны, на первое место нужно ставить поле с высокой селективностью. С другой - ставить на первое место с низкой, с целью компрессии ключа + для потенциального skip scan-а. Запросы могут быть как к первому полю, так и ко второму, или к обоим. Существуют ли какие-то рекомендации, или только опытным путем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 00:36 |
|
||
|
Индексы
|
|||
|---|---|---|---|
|
#18+
or12Запросы могут быть как к первому полю, так и ко второмуСделай два первых поля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 00:57 |
|
||
|
Индексы
|
|||
|---|---|---|---|
|
#18+
Для запроса по 2-м полям порядок полей в индексе не важен. Для запроса по селективному полю логично иметь селективное поле 1-м в индексе, чтобы избежать INDEX SKIP SCAN. Запрос по не селективному полю индекс не будет использовать, соответственно не понятно зачем его хотеть ставить 1-м в индекс. Также возможно лучше вообще убрать не селективное поле из индекса, если скорость выборки только по селективному полю достаточна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 06:15 |
|
||
|
Индексы
|
|||
|---|---|---|---|
|
#18+
wurduЗапрос по не селективному полю индекс не будет использовать, соответственно не понятно зачем его хотеть ставить 1-м в индекс. для компрессии же:or12ставить на первое место с низкой, с целью компрессии ключа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 06:34 |
|
||
|
Индексы
|
|||
|---|---|---|---|
|
#18+
wurduДля запроса по 2-м полям порядок полей в индексе не важен. Для запроса по селективному полю логично иметь селективное поле 1-м в индексе, чтобы избежать INDEX SKIP SCAN. Запрос по не селективному полю индекс не будет использовать, соответственно не понятно зачем его хотеть ставить 1-м в индекс. Также возможно лучше вообще убрать не селективное поле из индекса, если скорость выборки только по селективному полю достаточна. Ну зачем сразу так категорично. "Зачем пациенту таблетки, давайте отрежем". Например, если взять первый столбец с низкой селективностью из 10 значений и положить, что по обоим полям индексируется 5% таблицы, поставить его первым, то и сканирование по первому значению и по обоим и ISS по второму будет вполне замечательным. or12Существуют ли какие-то рекомендации, или только опытным путем? Рекомендации дали, но опытный путь всегда лучше ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 09:19 |
|
||
|
Индексы
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответы. Не понял только ответ от 1+2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 09:36 |
|
||
|
Индексы
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эхдля компрессии же compress advanced low - и можно не париться на тему порядка полей "для компрессии". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 10:41 |
|
||
|
Индексы
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousДобрый Э - Эхдля компрессии же compress advanced low - и можно не париться на тему порядка полей "для компрессии". Спасибо, интересно. "Ограничения": 12с + Advanced Compression Option. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 13:41 |
|
||
|
Индексы
|
|||
|---|---|---|---|
|
#18+
AlexFF__|wurduДля запроса по 2-м полям порядок полей в индексе не важен. Для запроса по селективному полю логично иметь селективное поле 1-м в индексе, чтобы избежать INDEX SKIP SCAN. Запрос по не селективному полю индекс не будет использовать, соответственно не понятно зачем его хотеть ставить 1-м в индекс. Также возможно лучше вообще убрать не селективное поле из индекса, если скорость выборки только по селективному полю достаточна. Ну зачем сразу так категорично. "Зачем пациенту таблетки, давайте отрежем". Например, если взять первый столбец с низкой селективностью из 10 значений и положить, что по обоим полям индексируется 5% таблицы, поставить его первым, то и сканирование по первому значению и по обоим и ISS по второму будет вполне замечательным. Не понял. Каким это образом сканирование по колонке с низкой селективностью из 10-ти уникальных значений будет вдруг замечательным. Это должно быть очень специфичное распределение данных, к примеру какое-нить крайне неравномерное распределение с селективным значением чтобы индекс мог использоваться. В приведенном примере такой индекс не будет использоваться для поиска по первому не селективному значению. Также автор сказал что второе значение все-таки селективное, а не комбинация из 2-х неселективных полей. Такдже не понятно откуда 5% взялись при условии что легко привести пример когда индексный доступ к 0.1% будет не эффективным по сравнению с fullscan. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 14:01 |
|
||
|
Индексы
|
|||
|---|---|---|---|
|
#18+
wurduНе понял. Каким это образом сканирование по колонке с низкой селективностью из 10-ти уникальных значений будет вдруг замечательным. Это должно быть очень специфичное распределение данных, к примеру какое-нить крайне неравномерное распределение с селективным значением чтобы индекс мог использоваться. В приведенном примере такой индекс не будет использоваться для поиска по первому не селективному значению Не нужно тут особо специальное распределение, пойдет и равномерное из 10 значений + 95% от всех записей в таблице NULL. И индекс на 0.5% (1 из 10 на 5%) просто полетит. wurduТакдже не понятно откуда 5% взялись при условии что легко привести пример когда индексный доступ к 0.1% будет не эффективным по сравнению с fullscan. Именно! Единственно правильное решение - это смотреть на распределение данных в таблице. Вот к чему я клоню. Кстати, также легко привести пример, когда получение 10% данных через индекс будет эффективнее fullscan. Так что только or12 опытным путем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 14:57 |
|
||
|
Индексы
|
|||
|---|---|---|---|
|
#18+
andrey_anonymouscompress advanced low - и можно не париться на тему порядка полей "для компрессии". Парится о порядке все же надо. Не надо будет париться только об числе столбцов для компрессии. Но об этом было и раньше просто узнать через analyze. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2016, 23:53 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39312410&tid=1887394]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
179ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 440ms |

| 0 / 0 |
