什么是为下面的查询创建索引的最佳方法

时间:2015-11-20 14:42:25

标签: php mysql sql indexing

我有这个问题:

select * from `metro_stations`
where `is_active` = 1
  and (`title` like '%search%' or `title_en` like '%search%')

如果is_active是TINYINT字段且标题是VARCHAR(255),如何创建有效索引?

这个查询怎么样:

select * from `metro_stations`
where `is_active` = 1
 and (`title` like '%search%' or
      `title_en` like '%search%' or
      `description` like '%search%')

如果说明字段是文字吗?

2 个答案:

答案 0 :(得分:0)

为每列使用全文索引。 如果在查询中使用“或”使用单独的fts索引,如果使用“和”混合fts索引(在一个索引中使用几列) Full Text Index

答案 1 :(得分:0)

FULLTEXT(title, title_en)

WHERE is_active = 1
  AND MATCH(title, title_en) AGAINST ("+search" IN BOOLEAN MODE)

(这适用于InnoDB(5.6+)或MyISAM。)

请记住"字长"的限制并且"停止言语"在FULLTEXT。