Я создал скрипт, чтобы найти избирательность каждого столбца для всех таблиц. В некоторых таблицах с менее чем 100 строк избирательность столбца составляет более 50%. Где Селективность = Значимые значения/Общее число строк. Являются ли эти столбцы подходящими для индекса? Или, можете ли вы сказать мне минимальное требование для количества строк для создания индекса?Какое минимальное количество строк требуется для создания индекса?
ответ
Вы можете индексировать на любой колонке - вопрос, имеет ли какой-то смысл и будет ли использоваться этот показатель ....
Как правило, селективность менее 1-5% может работать - меньше этот процент, тем лучше. Лучше всего одно значение из большой совокупности, например. один идентификатор клиента из сотен тысяч - эти индексы определенно будут использоваться.
Такие вещи, как пол (всего 2 значения) или другие вещи, которые имеют очень ограниченное количество возможных значений, обычно не работают хорошо по индексу. По крайней мере сами по себе - эти столбцы могут быть включены в другой индекс как второй или третий столбцы.
Но на самом деле, единственный способ выяснить, имеет ли или нет индекса смысл заключается в
- меры ваши запросы, прежде чем
- создать индекс
- запустить ваши запросы снова, проверить свои планы выполнения , измерять их тайминги
Нет никакого золотого правила относительно того, когда индекс будет использоваться (или проигнорирован) - в это решение входит слишком много переменных.
Для некоторых экспертных рекомендаций о том, как иметь дело с индексами, и как узнать, какие индексы могут не привыкают, и когда это имеет смысл создать индекс, см сообщения пользователя Kimberly Tripp в:
Я не уверен, что SQL-сервер, но большинство СУБД не использовать индекс для поиска я f он может извлекать все строки таблицы в одном вводе-выводе. Вы увидите это в пояснениях PLAN, некоторые таблицы всегда сканируются в табличном пространстве.
IMHO, любая таблица с менее чем 5000 строк не стоит анализировать для мощности, если СУБД работает на сервере.
В большинстве СУБД используется кэш для данных и кода (хранимая процедура, план выполнения и т. Д.). В SQL Server я думаю, что это называется данные и процедура кэш, и в Oracle, это называется кэш-буфера и SGA. Данные таблицы и/или индекс могут находиться в кеше.
Маленький стол, к которому часто обращаются, скорее всего, поместится в кеше. Но таблица может быть выведена из кеша, скажем, если запрос загружает свежие данные с диска. Есть варианты указать, что вы хотите, чтобы таблица была постоянно в кеше (см. PINTABLE).Возможно, это лучшая стратегия, которая использует индекс, если ваша таблица очень маленькая (это ваш случай). Добавление индекса (которое всегда было бы в кеше) могло бы помочь дальше, но я не знаю, какой будет выигрыш.
Большая разница в производительности - доступ к диску против доступа к памяти. Цель индекса - уменьшить объем данных для чтения с диска, но если он уже находится в памяти, коэффициент усиления, вероятно, мал.
- 1. Какое минимальное количество свопов требуется для создания пузырьков массива?
- 2. Минимальное количество строк для создания некластеризованного индекса на сервере Sql
- 3. Какое минимальное количество весов требуется для поиска разного веса?
- 4. Требуется минимальное количество сравнений
- 5. Минимальное количество байтов требуется
- 6. Требуется минимальное количество атак
- 7. CardLayout - для этого требуется минимальное количество места
- 8. Какое минимальное количество компьютеров для кластера slurm
- 9. DataGridView минимальное количество строк
- 10. Какое минимальное количество допустимого дерева B +?
- 11. Какое минимальное количество блоков объекта SecureFile?
- 12. Какое минимальное количество портов сокета, необходимых для TCP-сервера?
- 13. Требуется минимальное количество точек данных для повторной выборки?
- 14. Минимальное количество шагов, необходимых для достижения последнего индекса
- 15. Минимальное количество шагов для достижения позиции
- 16. Какое количество свопов требуется для сортировки сортировки для каждого случая?
- 17. Заставить минимальное количество строк в Listview
- 18. Какое разрешение требуется для создания изображений для универсальных приложений iOS?
- 19. Какое разрешение требуется для пользователя MySQL для создания базы данных?
- 20. Как вычислить минимальное количество максимальных строк?
- 21. Минимальное количество изображений запуска для универсального приложения
- 22. Обеспечьте минимальное количество строк в наборе результатов
- 23. SQL: выберите только минимальное количество строк.
- 24. Какое минимальное количество HTML требуется UpdatePanel до того, как оно упадет?
- 25. Symfony - Что требуется для создания плагина?
- 26. Какое минимальное количество цепочек зависимостей максимизирует пропускную способность выполнения?
- 27. Какое минимальное количество аргументов передается в потоке Python
- 28. Минимальное количество проверок для проверки таблицы истинности
- 29. Минимальное количество операций для сортировки массива
- 30. Минимальное количество строк в наборе данных для точных прогнозов
У меня есть таблица с тремя значениями зацепления, и все они являются объективными. Селективность составляет более 95%. И эта таблица в основном используется только с инструкцией select. Так можно ли создать индекс на этом? – Paresh
95% избирательный смысл? TYpically, вы хотите очень низкую избирательность - вы хотите, чтобы одно значение (ID = 55) выбирало только минимальное количество строк. Если ваша избирательность в этом сценарии (в процентах от количества строк из общей суммы будет выбрана для заданного значения вашего поля) составляет менее 5% или лучше даже менее 1%, то, безусловно, имеет смысл индексировать. –
«Такие вещи, как пол (всего 2 значения)», теперь, когда это 2018 год, эта часть вашего ответа устарела. С этого момента пол должен быть VARCHAR (255). Я лично идентифицирую себя как атакующий вертолет. –