php – 使用索引改进MySQL表
发布时间:2020-12-13 14:00:46 所属栏目:PHP教程 来源:网络整理
导读:我对 MySQL中的索引很新.我知道,我应该早点出发,但是大多数项目都足够小,我可以把它丢掉; 所以,现在我正在测试它.我通过运行EXPLAIN查询进行了测试: 查询: EXPLAIN SELECT a . *FROM `tff__keywords2data` AS aLEFT JOIN `tff__keywords` AS b ON a.keywor
我对
MySQL中的索引很新.我知道,我应该早点出发,但是大多数项目都足够小,我可以把它丢掉;
所以,现在我正在测试它.我通过运行EXPLAIN查询进行了测试: 查询: EXPLAIN SELECT a . * FROM `tff__keywords2data` AS a LEFT JOIN `tff__keywords` AS b ON a.keyword_id = b.id WHERE ( b.keyword = 'dog' || b.keyword = 'black' || b.keyword = 'and' || b.keyword = 'white' ) GROUP BY a.data_id HAVING COUNT( a.data_id ) =4 首先,没有索引我得到这些结果: 然后,使用data_id和keyword_id的索引,我得到: 所以据了解,MySQL搜索的行数从61k下降到10k,这一定是对的好吗? 所以我的问题是,我在这里是正确的吗?当尝试优化时,还有什么可以考虑的吗? 更新: 此外,在AJ和Piskvor的一些帮助之后,我指出我的其他表和其列关键字没有索引我得到这个: 大改善!对?
如您所见,用于表b的键仍为NULL.您可能需要在b.keyword上添加一个索引并与之匹配
WHERE b.keyword IN ('dog','black','and','white') 这与WHERE子句的功能不同,尽管它返回相同的结果. 看起来,您可能对全文搜索感兴趣. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |