我有一個數據庫與大量的廣告張貼。它在大小很小時工作正常,但現在託管公司經常暫停我的帳戶,因爲我的數據庫有超過10萬行。他們告訴我,我的查詢對我的桌子來說效率不高。所以,我做了一些在線搜索,並找到索引可能是一種解決我的查詢問題的方法。MySQL查詢優化器與索引
這裏查詢我的網站
$sql = "SELECT *
FROM `adstable`
WHERE `keytype` = '".$cate."'
ORDER BY `adstable`.`id` DESC
LIMIT 2000";
的$美食將在類別訪客選擇改變的基礎。我正在使用phpmyadmin,並且我想知道索引如何與上面的查詢一起工作。我創建了cate列的索引,但不知道如何使用創建的索引來優化查詢。
這裏是我如何使用
EXPLAIN
SELECT *
FROM `adstable`
WHERE `keytype` = '".$cate."'
ORDER BY `adstable`.`id` DESC
LIMIT 2000
添加索引
ALTER TABLE `adstable` ADD INDEX ( `keytype`)
我得到了這樣的事情:
id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra
1 | SIMPLE |adstable| ref | keytype | keytype | 38 |const|49392 | Using where; Using filesort
在此先感謝。
當您選擇*時,索引將幫助的唯一方法是如果索引位於表中的每個列上。但是如果你這樣做了,我敢肯定你的主機不會那麼喜歡......你需要縮小你選擇的語句的範圍,只包含你需要的那些字段。編輯您的問題以僅包含您需要的那些列,並且有人可以幫助您創建適當的索引。 – gangreen 2012-02-29 06:18:03
爲什麼你需要LIMIT 2000?當然你可以做更少的行嗎?我無法想象你會在一個頁面上投放2000個廣告:) – Daan 2012-02-29 07:21:02