2011-10-04 72 views

回答

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 

只要通配符是在开始时,没有索引都可以使用。如果您在通配符之前已经修复了数据,则可以使用索引。

一些数据库如PostgreSQL有诡计允许在所有情况下使用索引,但MySQL和SQLite不这样做。

+0

有道理 - 我现在知道这对MySQL是真实的。 SQLite呢? – Anthony

+0

@Anthony:对,SQLite也是如此。 – Johan

+0

谢谢。由于某种原因,我完全错过了第二句话。对于重申的问题抱歉。 – Anthony

2

这可能会帮助您:How MySQL Uses Indexes

+0

是的,谢谢。这一切都有道理。我猜SQLite会非常相似,但你会碰巧知道吗?我找不到它在http://www.sqlite.org/lang_expr.html – Anthony

+0

不,我只知道关于MySQL – michael667