[英]SQL query taking too much time to exectute
我有兩張桌子。 表1(問題)有2列“qid”(問題ID)和“問題”。 表2(答案)有“援助”(答案ID),“qid”和“答案”。 表2中的“qid”是表1中的外鍵,單個問題可能有多個答案。
兩個表都有30,000多個條目。
我做了一個循環,
for(each qid)
{
select question from table1 where qid = id;
select answer from table2 where qid = id;
}
傳遞的id數是10(到循環)。 查詢大約需要18秒才能執行。 這種延遲是正常的還是這種方法有問題。 我想知道是否有任何方法可以更快地進行上述查詢。
您可以在單個查詢中執行此操作,該查詢應該快得多。
SELECT t1.qid, t1.question, t2.aid, t2.answer
FROM table1 t1
INNER JOIN table2 t2 ON t2.qid = t1.qid
WHERE t1.qid IN (?,?,?,etc.);
或者你可以做到
SELECT t1.qid, t1.question, t2.aid, t2.answer FROM table1 t1, table2 t2 WHERE t1.qid=t2.qid AND t1.qid IN(...some condition...);
我完全同意@wvdz。
此外,這是一些可以提高選擇性能的常規列表:
此外,還有一些用於調優sql查詢的好資源: http : //beginner-sql-tutorial.com/sql-query-tuning.htm http://www.quest.com/whitepapers/10_SQL_Tips.pdf
關於主鍵的注意事項:如果您想了解有關主鍵使用的更多信息,我在過去提供的這個答案解釋了我如何使用主鍵以及為什么......提到這一點,因為在我看來,每個表都應該包含一個主鍵key: MySQL - 每個表都應該包含它自己的id / primary列嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.