喜欢SQLite(甚至是MysQL)

Ant*_*ony 4 mysql sqlite sql-like

LIKE关键字是否会在SQLite和/或MySQL中使用索引?

我会理解通配符匹配可能不会使用索引,但是如何从比较开始?

Joh*_*ica 6

这取决于:

WHERE field1 LIKE 'test'  << can use index
WHERE field1 LIKE 'test%' << can also use index
WHERE field1 LIKE '%test' << cannot use index
WHERE field1 LIKE '_test' << cannot use index
Run Code Online (Sandbox Code Playgroud)

只要通配符在开头,就不能使用索引.如果在通配符之前有固定数据,则可以使用索引.

像PostgreSQL这样的db有些技巧允许在所有情况下使用索引,但MySQL和SQLite却没有.