簡體   English   中英

Mysql 從慢日志查詢

[英]Mysql Query FROM SLOW LOG

我有查詢問題。

查詢: http : //pastebin.com/RNW0vgJX產品:10 000 時間:~18s

我如何優化此查詢?

就像 Mark Ba​​ker 建議的那樣,對查詢做一個解釋,它有助於找出索引可能被遺忘的地方。

基本上每個主鍵和外鍵都應該有一個。

同樣不同的products .* 可能非常昂貴。 您可以像這樣重寫查詢

select * from `products` where productid in (your first query ). 

這通常比表的所有列上的不同要快得多。

解釋結果:在解釋中,外鍵索引看起來不錯。 分組和排序有一些延遲:

  • 使用 where WHERE 子句用於限制哪些行與下一個表匹配或發送到客戶端。 除非您特別打算從表中獲取或檢查所有行,否則如果 Extra 值不是 Using where 並且表連接類型是 ALL 或索引,則您的查詢可能會出錯。 即使您對 WHERE 子句的所有部分都使用索引,您可能會看到 Using where if the column can be NULL。
  • 使用臨時表來解析查詢,MySQL 需要創建一個臨時表來保存結果。 如果查詢包含以不同方式列出列的 GROUP BY 和 ORDER BY 子句,則通常會發生這種情況。
  • 使用 filesort MySQL 必須執行額外的檢查以找出如何按排序順序檢索行。 排序是通過根據連接類型遍歷所有行並存儲排序鍵和指向與 WHERE 子句匹配的所有行的行的指針來完成的。 然后對鍵進行排序,並按排序順序檢索行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM