猿问

如何缩小 sql 查询范围,sql 查询优化

需求【1】有个20w的人员信息数据集(data),包括性别,年龄,省市等数据【2】查询特定性别,特定年龄下的各省份的人员统计数据
个人思路【1】先从20w的数据集中,找过特定性别,特定年龄下的人员信息。如20岁男生。得到数据集(data-after-filt),假设仅剩5w条符合的数据。【2】再遍历各城市(366个),针对(data-after-filt)进行统计查询,如查询,兴趣爱好,身高,视力等。【3】通过步骤1,将缩小查询范围,减少数据遍历的总次数。3665w<36620w。从而优化查询速度
遇到的困难,求助【1】mysql怎么实现步骤一,缩小待查询范围?【2】目前做法是,先建立一个主查询,再外面套一层子查询实现。这种方式是否有效?(个人感觉并没有用,反而每次都多了个主查询的操作。代码上得到了复用,但sql产生了冗余)每次都要进行主查询,再子查询。如:SELECTFROM(SELECTFROMxxx)xxx
白猪掌柜的
浏览 589回答 2
2回答

绝地无双

1.缩小查询范围,不是按照你的需求,用性别年龄来做谓词条件?2.不是很明白你要做什么统计,但感觉也不是分组,按照性别年龄筛选,按照城市排序,选择你需要的字段,例如兴趣爱好,身高,视力等。

哈士奇WWW

缩小查询范围也不一定是加子查询这样搞,假设你的子查询没有使用到索引的话,子查询就是全表扫描,这个时候效率反而会降低,还不如写成一个查询。提升查询速度无非就是让查询语句少进行全表扫描多走索引。多使用explain看看执行计划。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答