2013-09-16 2 views
1

производительность индекса тузд зависит от типа данныхИндекс MySql более высокую производительность с использованием определенного типа данных

Если это не делает, что лучшие типы данных для использования в таких случаях?

Кроме того, важно сохранить индекс в столбце с меньшим количеством повторяющихся значений или он будет давать такую ​​же производительность, даже если применяется к столбцу с огромными дублирующими значениями.

Заранее благодарен!

ответ

2

Отметки в сторону, лучшие типы данных являются наименьшими для удовлетворения требований к домену.

Типы данных столбцов влияют на производительность индексов на этих столбцах.

Меньше - лучше.

Показатели на целых столбцах работают лучше (меньше, быстрее).

В конкретном случае оптимизатор может не использовать индекс, если он недостаточно избирателен (т.е. столбец имеет много повторяющихся значений, а искомое значение, определенное по статистике, приведет к «слишком большому количеству» строк .

с @ ссылка nani1216 размещены:

Размер столбца или столбцов вы индексации актуальна, поскольку тем меньше данных сервер базы данных должен искать через или индексировать быстрее он будет и меньше места для хранения вы будете использовать на диске [или в памяти]

+0

Итак, согласно что вы говорите, позвольте мне изложить его.Индекс работает быстрее по столбцам с меньшим количеством повторяющихся значений. Надеюсь, у меня все получилось? –

+0

не обязательно работают быстрее (ну, это короткий ответ), но меньше дубликатов означает, что индекс будет с большей вероятностью использоваться –

+0

Спасибо! Это полезно. –

1

Да, характеристики варьируются в зависимости от типа данных. Индексирование по целочисленному типу данных дает вам больше производительности, чем индексирование по типам символов char или varchar.

Посмотрите What makes a good MySQL index?

+0

+1. хорошая ссылка ... можно ли назвать некоторые короткие, релевантные разделы? –

+0

Спасибо, ссылка тоже полезна –

1

Как другие отмечали, меньший тип данных лучше. Это по простой причине - вы можете иметь больше записей, загруженных в память, если запись меньше.

В InnoDB первичный ключ является последним столбцом для каждого вторичного индекса, поэтому малый первичный ключ чрезвычайно важен для таблиц InnoDB.

Что касается «избирательности» индекса, оптимизатор может вообще не использовать индекс и выполнять сканирование таблицы, если значение соответствует более 50% записей индекса (это потому, что если движок InnoDB, индекс является вторичным, и он не покрывает индекс, он должен ударить диск один раз, чтобы прочитать индекс, и второй раз, чтобы прочитать фактические данные строки, поэтому лучше просто прочитать данные таблицы. t получить большую производительность из индекса в столбце, который содержит в основном те же значения (но если небольшое количество значений составляет, например, 0, и вы точно запрашиваете эти строки, индекс может быть хорошим!)

Смежные вопросы