Какой тип поля лучше использовать для ускорения поиска? - PullRequest
1 голос
/ 15 сентября 2010

У меня вопрос об эквивалентном результате поиска, который может появляться в разных полях.

Допустим, я записываю логическое состояние удаления записей с 3 полями, такими как:

  • Логическое значение Удалено
  • Дата Удалить дату
  • Строка DeleteUserName

Цель запроса - избежать удаления записей в моем выборе. Поэтому я могу искать в первом поле только с 2 значениями (True / False) или по дате удаления: много разных значений или по имени пользователя разные значения, но не много.

Что даст лучшее время в результатах поиска относительно использования индекса?

Ответы [ 2 ]

0 голосов
/ 16 сентября 2010

Если вы делаете:

SELECT * FROM table WHERE 'deleted' = 0

(в этом формате), то это будет самым быстрым: другие не ищут быстрее илимедленнее, однако, для сравнения Bools требуется меньше накладных расходов, чем для сравнения строк / дат.(Обычно аспекты разных систем меняются, некоторые Bools хранятся как 8-битные, и не оптимизируются для проверки на равенство)

0 голосов
/ 15 сентября 2010

Какие запросы вы намерены исполнить?Примерно так:

SELECT * FROM mytable WHERE `deleted`=0

или

SELECT * FROM mytable WHERE `deleted_date` IS NULL

Они должны быть примерно одинаковыми, если индексированы deleted и deleted_date.

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