索引(INDEX)

  1. # 创建普通索引
  2. CREATE INDEX index_name ON table_name(column);
  3. # 组合索引
  4. CREATE INDEX index_name ON table_name(column1, column2...);
  5. # 忽略大小写的索引
  6. CREATE INDEX IF NOT EXISTS index_name ON table_name(column, COLLATE NOCASE);
  7. # 查看索引
  8. .INDICES
  9. # 删除索引
  10. DROP INDEX index_name;
  11. # 检查查询语句是否使用了索引
  12. EXPLAIN QUERY PLAN SELECT * FROM table_name WHERE name='zoro';
  13. EXPLAIN QUERY PLAN SELECT * FROM table_name WHERE name LIKE 'zoro';
  14. EXPLAIN QUERY PLAN SELECT * FROM table_name WHERE name LIKE 'zoro%';
  15. EXPLAIN QUERY PLAN SELECT * FROM table_name WHERE name LIKE '%zoro%';

使用LIKE语句进行模糊查询时,索引的使用?

LIKE语句是大小写不敏感的,而索引默认是区分大小写的 因此要想使LIKE语句使用索引,可以通过以下两种方式

  • 查询前开启忽略大小写模式 case_sensitive_like** **

    1. PRAGMA case_sensitive_like = ON;
    2. # 或
    3. PRAGMA case_sensitive_like = 1;
  • 创建索引时指定忽略大小写 COLLATE NOCASE** **

  1. CREATE INDEX index_name ON table_name(column, COLLATE NOCASE);

But, 还需要满足以下条件才能使用索引…

see docs: https://www.sqlite.org/optoverview.html#like_opt

  1. 查询字符串左边不能是通配符** `'%name' or '%name%'``×` `'name' or 'name%'``√`**