看板 Knuckles_note
作者 標題 Re: [MySQL] 使用 ORDER BY 時的 index 設定
時間 2013年01月08日 Tue. PM 05:23:25
※ 引述《Knuckles》之銘言:
: SQL有使用到 ORDER BY 來排序資料時,要設定好 index 速度才會快
: 若使用 explain SELECT ... 後
: 出現 using filesort,代表 index 沒有設好
: 參考 http://www.ccvita.com/169.html
: 若沒有使用 WHERE,而是對整張表排序時,就算有設 index 也可能會用 filesort
: 因為這種情況時 using filesort 可能比 using index 快
: 參考 http://stackoverflow.com/questions/9641463/mysql-not-using-index-for-order-by
今天研究了下這篇發現不知道該怎麼改善我的資料庫
A table有欄位:id, channel等等
B table有欄位:id, Aid(內容等於A表的id),time等等
撈資料的時候先去A table看該channel有哪幾個id
再去B table將那些Aid的內容撈出來 order by time DESC
A table index=channel
B table index=Aid
我在B table裡面無論如何增加index都會出現filesort
是否應該在B table建立Cid欄位並將A table的channel copy過來,然後建立index(time,Cid)?
--
※ 作者: ctec 時間: 2013-01-08 17:23:25
※ 同主題文章:
01-07 16:34 □ [MySQL] 使用 ORDER BY 時的 index 設定 (使用explain分析)
● 01-08 17:23 Re [MySQL] 使用 ORDER BY 時的 index 設定
※ 看板: KnucklesNote 文章推薦值: 0 目前人氣: 0 累積人氣: 421
6樓 時間: 2013-01-09 11:27:00 (台灣)
→
01-09 11:27 TW
喔 對喔 應該是要對同一個Aid下的東西排序 index 才會有用 如果有好幾個Aid的話 那好像應該是要再弄一個Cid然後index(Cid,time)
7樓 時間: 2013-01-10 16:11:14 (台灣)
→
01-10 16:11 TW
請問要怎麼將A table的Channel欄位值自動mapping到B table Cid欄位?
回列表(←)
分享