Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
вопрос по составномым индексам
|
|||
|---|---|---|---|
|
#18+
скажите пожалуйста, есть ли смысл создавать составной индекс с полями с малой уникальностью (например битовыми полями) Тобиш создать составной индекс на id, parentid, ischecked где id и parentid это поля с высокой уникальностью , а ischecked может быть 0 или 1. Но при этом во многих запросах идет в условии проверка поля ischecked (например ischecked=1) Вообщем: 1) есть ли смысл включать поле ischecked в составной индекс ? 2) намного ли увеличится индекс с этим полем? 3) значительно ли ускорятся запросы где используеься ischecked? 4) насколько замедлятся запросы где не используется ischecked? Какие будут соображения Товарищи? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2018, 15:58 |
|
||
|
вопрос по составномым индексам
|
|||
|---|---|---|---|
|
#18+
примеры запросов приведите, чтобы видно какие условия накладываются ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2018, 16:09 |
|
||
|
вопрос по составномым индексам
|
|||
|---|---|---|---|
|
#18+
Konst_One, к примеру select * from table1 t1 join table2 t2 on id=t1.id=t2.parentid join table3 t3 on t1.parentid=t3.id where t1.ischecked<>1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2018, 16:38 |
|
||
|
вопрос по составномым индексам
|
|||
|---|---|---|---|
|
#18+
Konst_One, сор ошибочка select * from table1 t1 join table2 t2 on t1.id=t2.parentid join table3 t3 on t1.parentid=t3.id where t1.ischecked<>1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2018, 16:40 |
|
||
|
вопрос по составномым индексам
|
|||
|---|---|---|---|
|
#18+
плохие запросы и плохое условие отбора можете попобовать создать индекс по id+parentid+include(ischecked) ps и звёздочки * замените на конкретные поля из таблиц в своих запросах ps ps и проверьте на своих данных с актуальными планами выполнения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2018, 16:48 |
|
||
|
вопрос по составномым индексам
|
|||
|---|---|---|---|
|
#18+
kolyady, - Бывает достаточно выгодно создавать фильтрованный индекс или 2 - <> 1 + индекс толком ничего не даст. Пишите = 0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2018, 16:56 |
|
||
|
вопрос по составномым индексам
|
|||
|---|---|---|---|
|
#18+
kolyady1) есть ли смысл включать поле ischecked в составной индекс ? Да есть, не будет дполнительного лукапа на другой индекс в некоторых случаях. kolyady2) намного ли увеличится индекс с этим полем? Нет на намного, в среднем на один байт (не бит) на каждую строку. Поэкспериментируйте, создайте два индекса и сравните размеры. kolyady3) значительно ли ускорятся запросы где используеься ischecked? Зависит от запроса kolyady4) насколько замедлятся запросы где не используется ischecked? Непонятно, ничего не замедлится кроме модификации строк таблицы, я бы не заморачивался, замедление должно быть незначительным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2018, 17:10 |
|
||
|
вопрос по составномым индексам
|
|||
|---|---|---|---|
|
#18+
TaPaK- <> 1 + индекс толком ничего не даст. Пишите = 0 Да используйте знак равенства, иначе нет толка от индекса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2018, 17:11 |
|
||
|
вопрос по составномым индексам
|
|||
|---|---|---|---|
|
#18+
Всем спасибо , вроде услышал что хотел. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2018, 17:15 |
|
||
|
вопрос по составномым индексам
|
|||
|---|---|---|---|
|
#18+
TaPaK- <> 1 + индекс толком ничего не даст. Пишите = 0Сервер уже давно умеет разворачивать "<>" в такое: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2018, 17:21 |
|
||
|
вопрос по составномым индексам
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей АлексеевичTaPaK- <> 1 + индекс толком ничего не даст. Пишите = 0Сервер уже давно умеет разворачивать "<>" в такое: индекс он тоже научился разворачивать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2018, 17:28 |
|
||
|
вопрос по составномым индексам
|
|||
|---|---|---|---|
|
#18+
TaPaKГавриленко Сергей Алексеевичпропущено... Сервер уже давно умеет разворачивать "<>" в такое: индекс он тоже научился разворачивать?Каким образом надо развернуть индекс, чтобы выполнить по нему поиск с условием ">" или с условием "<"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2018, 17:31 |
|
||
|
вопрос по составномым индексам
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей АлексеевичTaPaKпропущено... индекс он тоже научился разворачивать?Каким образом надо развернуть индекс, чтобы выполнить по нему поиск с условием ">" или с условием "<"? я так и написал: пишите = 0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2018, 17:32 |
|
||
|
вопрос по составномым индексам
|
|||
|---|---|---|---|
|
#18+
TaPaKГавриленко Сергей Алексеевичпропущено... Каким образом надо развернуть индекс, чтобы выполнить по нему поиск с условием ">" или с условием "<"? я так и написал: пишите = 0Вы написали, что "<> 1 + индекс толком ничего не даст", что является толком неверным утверждением. В обоих случаях будет использован поиск по индексу. С равенством будет быстрее только на один спуск по дереву, потому что для "<>" будет выполнен поиск по двум предикатам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2018, 17:42 |
|
||
|
вопрос по составномым индексам
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей АлексеевичTaPaKпропущено... я так и написал: пишите = 0Вы написали, что "<> 1 + индекс толком ничего не даст", что толком является неверным утверждением. В обоих случаях будет использован поиск по индексу. С равенством будет быстрее только на один спуск по дереву, потому что для "<>" будет выполнен поиск по двум предикатам. автор- <> 1 + индекс толком ничего не даст. Пишите = 0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2018, 17:44 |
|
||
|
вопрос по составномым индексам
|
|||
|---|---|---|---|
|
#18+
TaPaKГавриленко Сергей Алексеевичпропущено... Вы написали, что "<> 1 + индекс толком ничего не даст", что толком является неверным утверждением. В обоих случаях будет использован поиск по индексу. С равенством будет быстрее только на один спуск по дереву, потому что для "<>" будет выполнен поиск по двум предикатам. автор- <> 1 + индекс толком ничего не даст. Пишите = 0Приведите, пожалуйста, пример, когда простая эквивалентная замена "<> 1" на "= 0" при наличии индекса даст выигрыш хотя бы в два раза. Чтобы, так сказать, убедиться, что именно условие "<> 1" не позволяет "толком" использовать индекс. UPD: так же, я правильно понимаю, вы будете утвержать, что выгоднее заменять "<> N" на in ( 1, 2, ... все, кроме N) для остальных типов данных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2018, 17:49 |
|
||
|
вопрос по составномым индексам
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей АлексеевичTaPaKпропущено... пропущено... Приведите, пожалуйста, пример, когда простая эквивалентная замена "<> 1" на "= 0" при наличии индекса даст выигрыш хотя бы в два раза. Чтобы, так сказать, убедиться, что именно условие "<> 1" не позволяет "толком" использовать индекс. UPD: так же, я правильно понимаю, вы будете утвержать, что выгоднее заменять "<> N" на in ( 1, 2, ... все, кроме N) для остальных типов данных? авторischecked может быть 0 или 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2018, 17:52 |
|
||
|
вопрос по составномым индексам
|
|||
|---|---|---|---|
|
#18+
TaPaKГавриленко Сергей Алексеевичпропущено... Приведите, пожалуйста, пример, когда простая эквивалентная замена "<> 1" на "= 0" при наличии индекса даст выигрыш хотя бы в два раза. Чтобы, так сказать, убедиться, что именно условие "<> 1" не позволяет "толком" использовать индекс. UPD: так же, я правильно понимаю, вы будете утвержать, что выгоднее заменять "<> N" на in ( 1, 2, ... все, кроме N) для остальных типов данных? авторischecked может быть 0 или 1.Это вы так сливаетесь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2018, 17:56 |
|
||
|
вопрос по составномым индексам
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей АлексеевичTaPaKпропущено... пропущено... Это вы так сливаетесь? да, мне плевать на все ситуации которые вы сейчас предложите, в контекста вопроса правильно писать РАВНО ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2018, 17:58 |
|
||
|
вопрос по составномым индексам
|
|||
|---|---|---|---|
|
#18+
TaPaKГавриленко Сергей Алексеевичпропущено... Это вы так сливаетесь? да, мне плевать на все ситуации которые вы сейчас предложите, в контекста вопроса правильно писать РАВНОЯ так понимаю, есть какие-то другие, ранее не озвученные, критерии правильности, кроме "индекс толком ничего не даст"? Например "мне так больше нравится"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2018, 18:00 |
|
||
|
вопрос по составномым индексам
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей АлексеевичПриведите, пожалуйста, пример, когда простая эквивалентная замена "<> 1" на "= 0" при наличии индекса даст выигрыш хотя бы в два раза. Чтобы, так сказать, убедиться, что именно условие "<> 1" не позволяет "толком" использовать индекс. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2018, 18:25 |
|
||
|
вопрос по составномым индексам
|
|||
|---|---|---|---|
|
#18+
Владимир Затуливетер, Речь шла про обычный индекс. То, что не будет использоваться фильтрованный индекс, и ежу понятно. Однако почему при этом обычный индекс будет бесполезен, осталось невыясненным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2018, 18:27 |
|
||
|
вопрос по составномым индексам
|
|||
|---|---|---|---|
|
#18+
Пример конечно вы подобрали бодрый, parent-child hierarchy. В сторону hierarchyid смотрели? Я так понимаю условие isСhecked <> 1 возвращает очень маленькое кол-во строк относительно всех записей в таблице, иначе бы ваш индекс вообще не использовался в данном запросе, ну точнее index scan, если он покрывающий. Но в таком случае уж лучше тогда сделать по id include (parentID, isChecked), хотя очень вероятно что обычный кластерный индекс по id будет справляться не сильно хуже, т.к. как правило такие деревья не широкие. В вашем запросе таблица запрашивается 3 раза, и для каждого из этих 3 раз нужно 3 разных индекса (опять же только при условии что isСhecked <> 1 вернет вам условно < 1% записей в таблице) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2018, 21:14 |
|
||
|
вопрос по составномым индексам
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей АлексеевичTaPaKпропущено... пропущено... Приведите, пожалуйста, пример, когда простая эквивалентная замена "<> 1" на "= 0" при наличии индекса даст выигрыш хотя бы в два раза. Чтобы, так сказать, убедиться, что именно условие "<> 1" не позволяет "толком" использовать индекс.Не уверен насчет в два раза, но что если ischecked нужен в середине индекса, потому что скан диапазона желательно оставить для другого поля? Типа:type+ischecked+date Второй вариант таки должен быть побыстрее первого. Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2018, 02:38 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39684513&tid=1689297]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
51ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 351ms |

| 0 / 0 |
