当前位置: 首页 >Z-Blog教程 >正文

zblog查询标签ID下的文章的SQL语句优化+索引

浏览:472 作者:Admin 评论(0)

今天使用Z-Blog写某个功能的时候需要查询某个标签下的所有文章,发现使用like模糊搜索的时候速度是很慢的,根本就无法使用 ,平均耗时6s+, 遇到这种情况不解决肯定是不行的。

首先肯定是找万能的百度,搜索一番并没有发现zblog搜索包含标签ID的文章

此文仅做记录使用,遇到此问题的童鞋可以借鉴,如果大家有更好的优化方案也可以留言分享。

测试网站的各项数据

文章数量:25W+

标签数量:300左右

ng+php8+mysql5.7

标签并不多,但是文章有25W了,因为标签ID是以字符串形式存储的 {1},{2},{3} 又没有索引,导致查询的时候全表扫描 效率低下。

最开始使用的方法:

$tagID = 1;
$w = array();
$w[] = array('like', 'log_Tag', "%{$tagID}%");
// 平均耗时6s

优化方法:

// 创建log_Tag字段的索引
$zbp->db->Query("ALTER TABLE zbp_post ADD INDEX (log_Tag)");
$tagID = 1;
$w = array();
$w[] = array("(1 = 1) AND ( log_Tag in (SELECT log_Tag FROM zbp_post WHERE log_Tag LIKE '%{$id}%'))");

这样就会走索引,实现秒开效果。

如果需要添加其他的查询条件 如:log_Type log_Status log_CateID等需要注意,添加不当是不会走索引的。


事实证明当文章和标签量持续增加时,应避免使用模糊查找。

本文标题:zblog查询标签ID下的文章的SQL语句优化+索引

版权声明:本文由『Admin』发表于“ZB博客”,转载请注明出处。

发表评论

还没有评论,快来说点什么吧~