嗯,我有一個視頻網站和幾個表,分別是:MySQL查詢需要15秒以上運行;我能做些什麼來緩存/改進它?
標籤
id ~ int(11), auto-increment [PRIMARY KEY]
tag_name ~ varchar(255)
videotags
tag_id ~ int(11) [PRIMARY KEY]
video_id ~ int(11) [PRIMARY KEY]
視頻
id ~ int(11), auto-increment [PRIMARY KEY]
video_name ~ varchar(255)
現在,此時標籤表具有> 1000行,而videotags表具有> 32000行。所以當我運行一個查詢來顯示從最常見到最不常見的所有標籤時,它需要15秒鐘才能執行。
我使用PHP和我的代碼(淡化爲簡單起見)如下:
foreach ($database->query("SELECT tag_name,COUNT(tag_id) AS 'tag_count' FROM tags LEFT OUTER JOIN videotags ON tags.id=videotags.tag_id GROUP BY tags.id ORDER BY tag_count DESC") as $tags)
{
echo $tags["tag_name"] . ', ';
}
現在牢記,這是100%準確的對我來說並不重要,因爲它是快。所以即使查詢一天執行一次,其結果在一天中的其餘時間使用,我也不在乎。
我對MySQL/PHP緩存絕對一無所知,請大家幫忙!
請直接或通過PHPmyAdmin在查詢上運行EXPLAIN。 http://dev.mysql.com/doc/refman/5.0/en/explain.html – 2008-12-06 21:57:02