Какая структура поля будет лучше для таблицы определения в MySQL? - PullRequest
0 голосов
/ 26 октября 2011

Я делаю веб-приложение для словаря. Пользователь будет искать слова. Было бы быстрее сделать это?

SELECT * from definition WHERE word LIKE "house";

или ...

SELECT * from definition WHERE word_hash LIKE md5("house");

Во втором примере я сохраняю значение md5 () слов в поле word_hash. Конечно, «word» и «word_hash» являются индексами.

Обновление : иногда поле слова может содержать более 1 слова. Пример: Sacré Bleu

1 Ответ

1 голос
/ 26 октября 2011

Пропуск LIKE полностью будет быстрее. Добавлена ​​строчная версия word как word_lc, индекс word_lc, а затем выполните:

select * from definition where word_lc = lower(word_you_want)

Использование LIKE без каких-либо подстановочных знаков % или _ является всего лишь тестом на равенство без учета регистра, поэтому вам следует перейти непосредственно к сравнению с учетом регистра, которое может и будет использовать преимущества индекса. Также, как обычно, скажите, что вы имеете в виду, чтобы компьютер мог делать то, что вы хотите.

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