【问题标题】:LIKE in SQLite (and even MysQL)SQLite 中的 LIKE(甚至是 MySQL)
【发布时间】:2011-10-04 10:03:33
【问题描述】:

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

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

【问题讨论】:

    标签: mysql sqlite sql-like


    【解决方案1】:

    这取决于:

    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 没有。

    【讨论】:

    • 有道理——我现在知道这对 MySQL 来说是正确的。 SQLite 也是?
    • @Anthony:是的,SQLite 也是如此。
    • 谢谢。由于某种原因,我完全错过了第二句话。很抱歉再次提出问题。
    【解决方案2】:

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

    【讨论】:

    • 好的,谢谢。这一切都说得通。我猜 SQLite 会非常相似,但你会碰巧知道吗?我在sqlite.org/lang_expr.html 找不到它
    猜你喜欢
    • 2011-02-24
    • 1970-01-01
    • 2021-09-21
    • 2017-02-15
    • 1970-01-01
    • 2018-12-16
    • 2018-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多