2016-08-16 85 views
-1

我有5個表,所有有依賴關係,所以我寫這個查詢獲取數據和它的工作正常,但性能很差,所以你可以提出一些概念?如何避免多個連接以獲得更好的性能?

SELECT a.*,cg.*,c.*,qt.*,ct.* 
FROM MYB.choice_table ct 
RIGHT OUTER JOIN MYB.question_table qt ON ct.questionID = qt.questionID 
RIGHT OUTER JOIN MYB.category_table c ON c.categoryID = qt.categoryID 
RIGHT OUTER JOIN MYB.categoryGroup_table cg ON cg.categoryGroupID=c.categoryGroupID 
RIGHT OUTER JOIN MYB.audit_table a ON a.auditID=cg.auditID 
WHERE a.auditID=123 
+1

將'right join'替換爲'inner join'可能的地方 – mnv

+3

所有的表都被正確索引了嗎? – Charleh

+0

雖然閱讀正確的外連接總是很難,但查詢看起來很好,而且應該很快。當然,所有ID都有約束和索引。 –

回答

1

我可以立即想到的唯一事情就是索引所有用於連接的數據。

你也應該這樣做

Select * 

最小化的投資收益,你需要什麼

Sub注意

看着你查詢它要加入整個數據集和然後在它的where子句中搜索它。

所以我們假設a.123只有50個值,但所有的表都有10000行數據。如果每行10000行的表格有多少個列要返回搜索並獲得50個值,那麼您將加入n個數值

+0

你說得對。在多個桌子上的廚房水槽查詢通常是一團糟。 – tadman

相關問題