• Поиск большого количества записей в mysql

    @avryabov
    1. Индексы на *word* безусловно должны быть

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