MySQL性能优化 出题业务SQL优化

2019-01-03 14:36:09王旭

  B:SELECT 题目标识 FROM AnswerResult INNER JOIN Question AND Question.知识点={KnowledgePointCode}

  WHERE AnswerResult.用户标识 = {UserId} AND 正确次数 = 0 ORDER BY 错误次数 DESC

若要对做错、做对或者只做对的题目进行出题,SQL就是这样的(已经对权重进行冗余=IFNULL((0-正确次数)/(正确次数+错误次数),1)):

  C:SELECT 题目标识 FROM AnswerResult INNER JOIN Question AND Question.知识点={KnowledgePointCode}

  WHERE AnswerResult.用户标识 = {UserId} AND 正确次数 > 0 ORDER BY 权重 DESC

 

不足:SQL语句A的查询速度依然是较慢的,虽然有缩小NOT IN的结果集,但这里还是有优化点。园子里的朋友们能不能给点建议?

有人说JOIN是SQL的性能杀手,我觉得主要还是怎么去使用JOIN,MySQL的索引优化相当重要,如果JOIN成为性能瓶颈,可以EXPLAIN看看是不是索引没有建好,并且尽量让迪卡尔乘积尽量小。使用冗余数据避免JOIN,当可能变化的冗余数据被分表之后,更新这些冗余数据就是一件非常头痛的事了。海量数据高并发,确实是一件挺头痛的事。

望园子里有这方面经验的朋友不吝赐教。谢谢。

您可能感兴趣的文章:

101个MySQL优化技巧和提示MySQL优化必须调整的10项配置mysql优化取随机数据慢的方法跟着hsp一步步学mysql优化的方法有关mysql优化的一些东东整理LAMP服务器性能优化技巧之Mysql优化MySQL优化配置文件my.ini(discuz论坛)mysql优化配置参数非常不错的MySQL优化的8条经验MySQL优化全攻略-相关数据库命令mysql数据库sql优化原则(经验总结)