簡體   English   中英

如何進一步優化此查詢?

[英]How to optimize this query more?

    SELECT mem.name, 
           mem.regdate, 
           stat.level
      FROM stats AS stat
INNER JOIN members AS mem
     WHERE stat.id = mem.id 
       AND mem.ref = {$members['id']}

statsmembers表的索引為id 但是,當我運行查詢時,它會檢查stats表中的所有行(在members表中只需要一行)。 有什么想法我做錯了嗎? 謝謝。

使用正確的ANSI-92 JOIN語法-在ON子句中指定了JOIN標准:

SELECT mem.name, 
       mem.regdate, 
       stat.level
  FROM stats AS stat
  JOIN members AS mem ON mem.id = stat.id 
 WHERE mem.ref = {$members['id']}

如果沒有JOIN條件,MySQL將返回笛卡爾乘積,然后將WHERE子句應用於這些結果。 幾乎所有其他數據庫都會告訴您,您提供的查詢存在語法錯誤。

另外, INNER關鍵字是可選的。

嘗試從主表中選擇(在這種情況下,我認為是成員),並加入具有統計信息的統計信息以獲取更多信息。 使用ON定義統計信息如何連接到成員,並使用WHERE限制成員表的結果。

SELECT mem.name, mem.regdate, stat.level
FROM members AS mem
INNER JOIN stats AS stat
  ON stat.id = mem.id
WHERE mem.ref = {$members['id']}

由於它是一個INNER JOIN,因此您也可以將其翻轉(從統計數據中選擇,加入成員),但是考慮到您正在尋找某個成員,這可能更有意義。

暫無
暫無

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

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