簡體   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