我從我的網站託管公司獲得通知,優化我的網站中的MySQL查詢。他們告訴我,共享主機中不允許運行MySql查詢超過15秒,而該域的mysql查詢運行時間超過75秒。如何優化mysql查詢
但我不知道該怎麼做,以及在哪裏更改以優化MySQL查詢。請幫我解決這個問題。
用戶@主機:khabarin_suprusr [khabarin_suprusr] @本地[]
Query_time:76.546533 Lock_time:1.408959 Rows_sent:5 Rows_examined:3038
use khabarin_portal3;
SET timestamp=1347378163;
SELECT *
FROM (`art_conts`)
JOIN `art_cats` ON `art_cats`.`cat_id`=`art_conts`.`cat_id`
JOIN `art_secs` ON `art_secs`.`sec_id`=`art_cats`.`sec_id`
WHERE `art_conts`.`cont_status` = 'public'
ORDER BY `cont_id` desc
LIMIT 5;
用戶@主機:khabarin_suprusr [khabarin_suprusr] @本地[] **強文本 Query_time:54.002604 Lock_time:1.403354 Rows_sent:1 Rows_examined:3033 **
use khabarin_portal3;
SET timestamp=1347376289;
用戶@主機:khabarin_suprusr [khabarin_suprusr] @本地[]
Query_time:24.436448 Lock_time:13.889496 Rows_sent:1 Rows_examined:0
use khabarin_portal3;
SET timestamp=1347376151;
SELECT COUNT(*) AS `numrows`
FROM (`art_conts`)
JOIN `art_cats` ON `art_cats`.`cat_id`=`art_conts`.`cat_id`
JOIN `art_secs` ON `art_secs`.`sec_id`=`art_cats`.`sec_id`
WHERE `art_conts`.`cat_id` = '59'
AND `art_conts`.`cont_status` = 'public'
ORDER BY `cont_id` desc;
「如果有可能避免‘*’的語句,並只選擇真正需要的行。」 這是神話,它不是真的。 * – confiq
@confiq沒有問題那麼我該怎麼做? – Rohan
EXPLAIN是一個好開始。之後,將索引放在鍵上。 然後移動到專用/ VPS(如果需要) – confiq