推广 热搜: 公司  快速  上海  中国  企业    未来  政策  系统  公司2 

【mysql】一次有意思的数据库查询分析。

   日期:2024-11-11     作者:xinet    caijiyuan   评论:0    移动:http://www78564.xrbh.cn/mobile/news/27083.html
核心提示:本文是在做一家汽车配件的电商网站时,大体情景是一个List.php页面,该页面分页列出部分配件并统计总数量用于分页。当然该页面中

本文是在做一家汽车配件的电商网站时,大体情景是一个List.php页面,该页面分页列出部分配件并统计总数量用于分页。

【mysql】一次有意思的数据库查询分析。

当然该页面中也可以指定一下查询条件,如适配的车辆品牌、车系、排量、年份等,一件商品可能适配多种车辆。

所以建了个这么个表:

goods_chexings表

列名依次为:车辆厂牌id,车系id,排量id,车型id(该车型的说法不太规范,客户给的数据里边就叫车型,就这么将就着用了,实际是年份的字符串如哪年开始到哪年结束),配件的id(该id源于good表)。

车辆厂牌id,车系id,排量id,车型id存在着层级关系,层级为:车辆厂牌id -> 车系id ->  排量id -> 车型id,表这么建算是为了方便查找吧,有时候只指定到厂牌或者车系,让你列出来适配的配件。

。。。冗余,冗余哈,查找方便。

 

上PHP后端代码哈:

查找时候的where子句:

 

 

然后select的主体

 大体说下goods表和goods_chexings表的数量级:goods几千条,goods_chexings几万条。

 

但是List.php页面,如果什么条件都不指定的话,Waiting Time大约得10s,亮了。。。。

如果随便指定个车系、厂牌啥的,Waiting Time大约也就零点几秒的,也亮了。。。。

 

补充一下,goods_chexings表上有索引的。。。。

 

看到这能猜到时间差距为啥那么大了吧。。。。不指定查询条件时join goods_chexings根本就没用,只查询goods表就行了。

没指定查询条件 goods_chexings表上有索引根本就不起作用,全表扫描。。。。

 

修改后的查询:

 

 

备注:写统配的sql语句写习惯了,不管查询的时候起不起作用,可能使用到的表先from或者join了,

  如果出现要查询的条件时就加在where子句里边。。。。。引起的索引不起作用,全表扫描了。

 

本文地址:http://www78564.xrbh.cn/news/27083.html    迅博思语 http://www78564.xrbh.cn/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。

 
 
更多>同类最新资讯
0相关评论

文章列表
相关文章
最新动态
推荐图文
最新资讯
点击排行
网站首页  |  二维码  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  粤ICP备2023022329号