簡體   English   中英

MySql,有人可以建議如何提高查詢效率和腳本速度嗎?

[英]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.

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