Дата и время по умолчанию, индексы и первичные ключи - PullRequest
0 голосов
/ 23 января 2012

У меня есть много столбцов DATE TIME в mysql.

Должен ли я использовать значение по умолчанию как none или 0000-00-00 00: 00: 00

Также на моих таблицах есть одинпервичный ключ, который является значением автоинкремента.

Должен ли я добавлять индексы во все мои столбцы, где они появляются в моих запросах WHERE предложение?

Желательно ли также устанавливать внешние ключи на ПЕРВИЧНЫХ ключах, это ускорит мойmysql JOINS?

1 Ответ

2 голосов
/ 23 января 2012

Должен ли я использовать значение по умолчанию как none или 0000-00-00 00: 00: 00

Если «дата отсутствует», используйте значение NULL.Обнуление даты и времени просто означает, что вам нужно проверять это вместо NULL, но проверки будут выполняться медленнее, и вы тратите пространство / пропускную способность для его хранения / извлечения.

Должен ли я добавлять индексы во все мои столбцы, где они появляются в моих запросах Предложение WHERE?

Нет, добавлять индексы только в те столбцы, которые имеют наибольшее число уникальныхценности.Я не знаю, стал ли планировщик запросов MySQL лучше, чем раньше, но вы также можете повысить производительность, убедившись, что эти столбцы появляются первыми в ваших предложениях WHERE.Причина заключается в том, что после того, как вы ограничили результаты запроса небольшим количеством строк одним предложением where, остальные предложения можно проверить с линейным сканированием так же быстро, как и с индексами, поэтому избыточные индексы простозагрузка диска и (что особенно важно) оперативной памяти.

Желательно ли также устанавливать внешние ключи на ПЕРВИЧНЫХ ключах, это ускорит мои mysql JOINS?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...