繁体   English   中英

Mysql表优化过滤和防止文件排序

[英]Mysql Table Optimization For Filtering and preventing filesort

我正在使用nodejs mysql作为后端构建一个角度测验应用程序。 测验问题表具有ID,标题,choice_a,choice_b..choice_d,subject_id fk,topic_id fk,rand1,rand2,rand3等字段

顺序为id asc,id desc,rand1 asc,rand1 desc,rand2 asc,rand2 desc,rand3 asc,rand3 desc等,以随机排序

rand字段包含从1到20的值随机分配,以进行随机测验

我的问题是如下所示的查询

    SELECT question.*,subject.title as subject_title,region.title as region_title,topic.title as topic_title FROM question LEFT JOIN subject ON
   (question.subject_id = subject.id) LEFT JOIN region ON (question.region_id = region.id) LEFT JOIN topic ON (question.topic_id = 
   topic.id) WHERE ((question.subject_id = '4')) ORDER BY rand1 DESC LIMIT 20

在这里,结果使用rand1(随机分配)进行过滤。 现在我想知道为(subject_id,rand1)添加组合索引是否有帮助?

如果是的话,我将不得不为(subject_id,rand1)(subject_id,rand2)(subject_id,rand3)(subject_id,id)添加组合索引,因为它们通常是过滤+排序组合?

在这种情况下,使用postgresql代替mysql是否有帮助?

组合索引中最大字段数是多少?

我已经找到答案了。 通过创建不同的复合索引,我能够将每秒节点服务器的请求增加到两倍以上。 组合索引有很多,可以精确地优化频繁查询。 通过在添加索引前后对基准进行基准测试,我可以最大程度地进行优化。 谢谢大家....

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM