Ответы пользователя по тегу SQLite
  • Оптимизация в SQLite

    @Krovosos
    LIKE не подхватывает, потому что есть тонкости. Про них можно почитать здесь.

    Вкратце:
    1) столбец в таблице обязан иметь тип TEXT:

    foo(bar TEXT) — хорошо, foo (bar) — плохо

    2) по умолчанию: LIKE регистронезависим, а COLLATION (т.е. способ сравнения данных) используется BINARY, то есть обычное посимвольное совпадение = регистрозависим.

    Поэтому нужно либо включить режим case-sensitive для LIKE командой

    PRAGMA case_sensitive_like = 1;

    Либо в индексе указать нужный тип COLLATION:

    CREATE INDEX idx ON foo (name COLLATE NOCASE);

    3) LIKE должен быть записан как <СТОЛБЕЦ> LIKE «XXX%»

    Т.е. слева — столбец, справа — строковый литерал, который _не начинается_ на wildcard.

    Проверил вариант с case_sensitive_like = 1; индекс используется.
    Ответ написан
    3 комментария
  • Оптимизация в SQLite

    @Krovosos
    Если поиск ведется по условию 'XXX%', то индекс использовать можно.

    Если нужен полнотекстовый поиск, то смотреть здесь
    Ответ написан
    1 комментарий