此查詢從當前可靠的小表中返回幾千行的建議列表(提示)。但它返回的提示太慢而不是非常有用。其他大多數問題都表明向數據庫投票尋找放緩的地方。我真的沒有必要做到這一點。它目前看起來像下面,也許有人可以幫助我看到一種我不知道的技術。我真的很想加快以下查詢。如何讓MySQL更高效地運行?
$stmt = $db_found->prepare("SELECT DISTINCT callsign, Fname, ID, grid,
tactical, latitude, longitude, email, Lname
FROM NetLog
WHERE recordID IN (SELECT max(recordID)
FROM NetLog
WHERE callsign LIKE ?
AND callsign NOT IN ('W0KCN','WA0QFJ','T0EST','K0ERC','NR0AD')
GROUP BY callsign)");
因此,它會拉出最新版本的recordID。 recordID是此表中的自動增量變量。如果我刪除第一個FROM和WHERE,則查詢執行速度會快得多。像這兒;
$stmt = $db_found->prepare("SELECT DISTINCT callsign, Fname, ID, grid, tactical, latitude,
longitude, email, Lname, recordID
FROM NetLog
WHERE callsign LIKE ?
AND callsign NOT IN ('W0KCN','WA0QFJ','T0EST','K0ERC','NR0AD')
GROUP BY callsign");
問題是不能保證這是最新的記錄。
我該如何加快退貨速度,並且仍然確定我正在爲此呼號獲取最新的recordID?
我喜歡這樣的聲音,但我遇到了讓語法工作的問題。我沒有確切地得到一個錯誤,但我可以在我的編輯器中看到,語法不會驗證。我應該用引號括起來(「),並以a結尾); ?? –
@KeithDKaiser。obviusly這個必須用雙引號括起來(並以a結尾;答案已更新.. – scaisEdge
我仍然得到這樣的錯誤:#1054 - 'on子句'中的未知列't1.recordID' –