2. по поводу запросов типа word in ('val1','val2',...):
Иногда, особенно на большой таблице выгоднее написать 100 запросов типа word=valN,
чем один запрос типа in со 100 значениями внутри.
Это связано с тем как mysql оптимизирует запрос IN.
Оптимизация может быть очень фиговой.
Если я не ошибаюсь, он действует так: берет самое большое и самое малое значение из аргументов in, а среди них уже просто перебирает все слова на совпадение.
Так по крайней мере раньше было.
Если есть слова типа 'а' и 'я' — перебор будет по всей таблице как без индекса.
Попробуй сделать expain на select.
И проверь, что происходит.
К тому же если таблица обновляется не часто, а некоторые слова приходят часто, то эти запросы mysql закеширует и будет отдавать очень быстро. В отличии от запроса in — который мало вероятно, что повториться целиком.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
2. по поводу запросов типа word in ('val1','val2',...):
Иногда, особенно на большой таблице выгоднее написать 100 запросов типа word=valN,
чем один запрос типа in со 100 значениями внутри.
Это связано с тем как mysql оптимизирует запрос IN.
Оптимизация может быть очень фиговой.
Если я не ошибаюсь, он действует так: берет самое большое и самое малое значение из аргументов in, а среди них уже просто перебирает все слова на совпадение.
Так по крайней мере раньше было.
Если есть слова типа 'а' и 'я' — перебор будет по всей таблице как без индекса.
Попробуй сделать expain на select.
И проверь, что происходит.
К тому же если таблица обновляется не часто, а некоторые слова приходят часто, то эти запросы mysql закеширует и будет отдавать очень быстро. В отличии от запроса in — который мало вероятно, что повториться целиком.