[问与答] 打开网站首页数据库 MySQL 查询次数的疑惑

数据库只有一张表
字段: 40 个
行数: 30 万行

字段 0 名: studentId
字段 0 作用: 主键,记录 student 唯一 id

字段 1 名: insertTime
字段 1 作用: 记录插入 10 位时间戳

字段 2 名: studentName
字段 2 作用: 记录 student 名字

字段 3 名: studentType
字段 3 作用: 记录 student 的类型:{1:小学、2:初中、3:高中}

字段 3 名: studentHome
字段 3 作用: 记录 student 的家庭住址:城市,区域,街道,小区名称

字段 3 名: studentHit
字段 3 作用: 记录 student 的信息被查看次数

首页第一部分需要展示
查询语句:
本周_属于**小区_所有小学生信息被查询次数_前 8 名的排行榜:
“SELECT studentId, insertTime, studentName, studentImg FROM studentInfo WHERE studentType=1 AND studentHome LIKE ‘小区名称%’ AND week(insertTime)=week(now()) ORDER BY studentHit DESC LIMIT 15;”

本周_属于**小区_所有初中生信息被查询次数_前 8 名的排行榜:
“SELECT studentId, insertTime, studentName, studentImg FROM studentInfo WHERE studentType=2 AND studentHome LIKE ‘小区名称%’ AND week(insertTime)=week(now()) ORDER BY studentHit DESC LIMIT 15;”

本周_属于**小区_所有高中生信息被查询次数_前 8 名的排行榜:
“SELECT studentId, insertTime, studentName, studentImg FROM studentInfo WHERE studentType=3 AND studentHome LIKE ‘小区名称%’ AND week(insertTime)=week(now()) ORDER BY studentHit DESC LIMIT 15;”

本周_全省_所有学生信息被查询次数_前 15 名的排行榜:
“SELECT studentId, insertTime, studentName, studentImg FROM studentInfo AND week(insertTime)=week(now()) ORDER BY studentHit DESC LIMIT 15;”

我的疑问是:
1 、如果首页需要展示的 5 个部分和上面第一部分类似,那么光是一个用户打开首页,就需要查询数据库 5(首页 5 个部分)*4(每部分 4 次查询)=20 次?

2 、即使是针对相关的字段做了索引,查询时间也在 15 毫秒左右,按照疑问 1:如果是打开一次首页需要 20 次查询,那不就是需要 15 毫秒*20=300 毫秒,意味着即使不计算网络延时,单纯只是数据库查询都需要 300 毫秒,如果这样,到实际生产时完全不可用了,新人接触编码 3 个多月,能力暂时有限,特地求教各位大神有什么好的解决方案吗?

发表回复

您的电子邮箱地址不会被公开。