表xx_user_detail,user_id为int主索引,site1-site9为组合全文索引,总行数为500万行
SELECT * FROM xx_user_detail WHERE (user_id=14) AND MATCH (site1,site2,site3,site4,site5,site6,site7,site8,site9) AGAINST ('苏娟的食品店');
这个SQL1使用0.3s
SELECT * FROM xx_user_detail WHERE (user_id=14 or user_id=15) AND MATCH (site1,site2,site3,site4,site5,site6,site7,site8,site9) AGAINST ('苏娟的食品店');
这个SQL2使用2.5s
1 为什么 SQL2 仅添加一行就比 SQL1 慢?如何改进SQL2?
2 SQL1,扫描一行用了0.3s,正常吗?如果不行,如何改进?
OR语句强制数据库搜索孔表
所以
SELECT * FROM xx_user_detail WHERE (user_id=14 ) AND MATCH (site1,site2,site3,site4,site5,site6,site7,site8,site9) AGAINST ('苏娟的食品店');
UNION
SELECT * FROM xx_user_detail WHERE (user_id=15 ) AND MATCH (site1,site2,site3,site4,site5,site6,site7,site8,site9) AGAINST ('苏娟的食品店');
会带来更快的结果