加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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子句的功能不同,尽管它返回相同的结果.

看起来,您可能对全文搜索感兴趣.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读