[英]MySql, can anyone suggest how to improve my queries, speed of my script?
我需要一些幫助來提高腳本速度。 這是兩個查詢。
$sql = "SELECT PadID FROM keywords WHERE Word = '$search'";
$sql = "SELECT Category, LongCategory, PageBase, PageName, ProgramName,
ProgramVersion, English250, ReleaseDate, License
FROM pads
LEFT JOIN categories ON pads.CatID = categories.CatID
WHERE PadID IN ($pads)
ORDER BY VersionAddDate DESC
LIMIT $variable,20";
第一個查詢產生了PadId的列表,我在第二個查詢中使用了一個參數。
大部分時間都能找到這種方法,但是,如果我接到一個非常受歡迎的關鍵字的電話,則腳本可能需要幾秒鍾才能運行。 今天早上,我有一個包含9600條記錄的關鍵字。
我該怎么解決。
編輯:問題是我的網站今天早上已經報廢,在20分鍾內打了幾千個電話。 但是,無論如何,第二條查詢需要花費幾秒鍾來處理這么多記錄,因此我需要對其進行改進。
您只能在一個查詢中完成所有這些操作,但是我懷疑這會大大提高性能:
SELECT Category, LongCategory, PageBase, PageName, ProgramName, ProgramVersion, English250, ReleaseDate, License
FROM pads
INNER JOIN keywords ON pads.PadID = keywords.PadID
LEFT JOIN categories ON pads.CatID = categories.CatID
WHERE Word = '$search'
ORDER BY VersionAddDate DESC
LIMIT $variable,20
否則,您是否在表上設置了索引,主鍵和外鍵?
返回數千個結果的查詢要比返回10個結果的查詢慢,這是完全正常的。 您不能為此做太多。 您的查詢已經非常簡單。 我唯一想到的就是壞索引。
您在所涉及的表上是否有任何索引,例如在VersionAddDate
?
您知道子查詢嗎?
今天早上,我有一個包含9600條記錄的關鍵字。
9600個返回的記錄很重,而且都沒有有用的搜索結果。 (誰瀏覽了五個以上的Google搜索頁面?)
將RS縮小到1%會更有意義,請考慮根據受歡迎程度,日期等添加“權重”。
為了獲得最佳性能,請使用復合索引(唯一性最高)。
您是否確定實際上是SQL查詢速度較慢,而不是(php)腳本執行和/或瀏覽器中的渲染?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.