在mysql里,like ‘xxx%’可以用到索引,但like ‘%xxx%’却不不行的,对于这种模式匹配like ‘%xxx%’可通过覆盖索引进一步优化,举个例子: 1.select id form table where like ‘%xxx%’,这里id是主键(也就是索引),主要你的select字段正好是索引,那么就会用到覆盖索引了,通过覆盖索引,可以减少IO,提高性能,简单说,覆盖索引就是:我要在书里查找一个一个内容,由于目录写得很详细,我在目录中就能获取得到,不需要翻到详细页去看了。 例如: 1.select count(*) from table where like ‘%xxx%’ 2.select count(*) from table a join ( select id form table where like ‘%xxx%’) b on a.id =b.id 那么第一个例子跟第二个例子的结果是一样的,但由于第二个用到了覆盖索引,所以性能就提高了,大致上的匹配优化就是这样
加索引可以提升 但是如果是 like '%xxxx%' 那么效率和不加索引一样
还有你要查的内容是什么
like 'xxxx%' 会快点
sphinx
在mysql里,like ‘xxx%’可以用到索引,但like ‘%xxx%’却不不行的,对于这种模式匹配like ‘%xxx%’可通过覆盖索引进一步优化,举个例子:
1.select id form table where like ‘%xxx%’,这里id是主键(也就是索引),主要你的select字段正好是索引,那么就会用到覆盖索引了,通过覆盖索引,可以减少IO,提高性能,简单说,覆盖索引就是:我要在书里查找一个一个内容,由于目录写得很详细,我在目录中就能获取得到,不需要翻到详细页去看了。
例如:
1.select count(*) from table where like ‘%xxx%’
2.select count(*) from table a join ( select id form table where like ‘%xxx%’) b on a.id =b.id
那么第一个例子跟第二个例子的结果是一样的,但由于第二个用到了覆盖索引,所以性能就提高了,大致上的匹配优化就是这样