麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > MySQL > 正文

MySQL 通過索引優化含ORDER BY的語句

2020-01-19 00:16:26
字體:
來源:轉載
供稿:網友

關于建立索引的幾個準則:

1、合理的建立索引能夠加速數據讀取效率,不合理的建立索引反而會拖慢數據庫的響應速度。

2、索引越多,更新數據的速度越慢。

3、盡量在采用MyIsam作為引擎的時候使用索引(因為MySQL以BTree存儲索引),而不是InnoDB。但MyISAM不支持Transcation。

4、當你的程序和數據庫結構/SQL語句已經優化到無法優化的程度,而程序瓶頸并不能順利解決,那就是應該考慮使用諸如memcached這樣的分布式緩存系統的時候了。

5、習慣和強迫自己用EXPLAIN來分析你SQL語句的性能。

一個很容易犯的錯誤:

不要在選擇的欄位上放置索引,這是無意義的。應該在條件選擇的語句上合理的放置索引,比如where,order by。

例子:

SELECT id,title,content,cat_id FROM article WHERE cat_id = 1;

上面這個語句,你在id/title/content上放置索引是毫無意義的,對這個語句沒有任何優化作用。但是如果你在外鍵cat_id上放置一個索引,那作用就相當大了。

幾個常用ORDER BY語句的MySQL優化:

1、ORDER BY + LIMIT組合的索引優化。如果一個SQL語句形如:

SELECT [column1],[column2],.... FROM [TABLE] ORDER BY [sort] LIMIT [offset],[LIMIT];

這個SQL語句優化比較簡單,在[sort]這個欄位上建立索引即可。

2、WHERE + ORDER BY + LIMIT組合的索引優化,形如:

SELECT [column1],[column2],.... FROM [TABLE] WHERE [columnX] = [value] ORDER BY [sort] LIMIT[offset],[LIMIT];

這個語句,如果你仍然采用第一個例子中建立索引的方法,雖然可以用到索引,但是效率不高。更高效的方法是建立一個聯合索引(columnX,sort)

3、WHERE + IN + ORDER BY + LIMIT組合的索引優化,形如:

SELECT [column1],[column2],.... FROM [TABLE] WHERE [columnX] IN ([value1],[value2],...) ORDER BY[sort] LIMIT [offset],[LIMIT];

這個語句如果你采用第二個例子中建立索引的方法,會得不到預期的效果(僅在[sort]上是using index,WHERE那里是using where;using filesort),理由是這里對應columnX的值對應多個。

這個語句怎么優化呢?我暫時沒有想到什么好的辦法,看到網上有便宜提供的辦法,那就是將這個語句用UNION分拆,然后建立第二個例子中的索引:

SELECT [column1],[column2],.... FROM [TABLE] WHERE [columnX]=[value1] ORDER BY [sort] LIMIT[offset],[LIMIT]
UNION
SELECT [column1],[column2],.... FROM [TABLE] WHERE [columnX]=[value2] ORDER BY [sort] LIMIT[offset],[LIMIT]
UNION
……

但經驗證,這個方法根本行不通,效率反而更低,測試時對于大部分應用強制指定使用排序索引效果更好點

4、不要再WHERE和ORDER BY的欄位上應用表達式(函數),比如:

SELECT * FROM [table] ORDER BY YEAR(date) LIMIT 0,30;

5、WHERE+ORDER BY多個欄位+LIMIT,比如

SELECT * FROM [table] WHERE uid=1 ORDER x,y LIMIT 0,10;

對于這個語句,大家可能是加一個這樣的索引(x,y,uid)。但實際上更好的效果是(uid,x,y)。這是由MySQL處理排序的機制造成的。

以上例子你在實際項目中應用的時候,不要忘記在添加索引后,用EXPLAIN看看效果。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: av电影在线网 | 91精品国 | 91精品视频免费 | 欧美一级黄色片免费观看 | 毛片a片 | 欧美一级片一区 | 国产亚洲欧美日韩在线观看不卡 | 国产亚洲小视频 | 久久久国产一级片 | 91成人亚洲| 亚洲国产精品久久久久久久久久 | 手机在线看片国产 | av电影免费播放 | 成人艳情一二三区 | 久久亚洲精品久久国产一区二区 | 中国国语毛片免费观看视频 | 亚洲福利视频52 | 久久久一区二区三区视频 | 黄色7777| 亚洲成人在线视频网站 | 国产88久久久国产精品免费二区 | 国产一区二区午夜 | 青青草成人av | 一道本不卡一区 | 国产精品成年片在线观看, 激情小说另类 | 日韩毛片毛片久久精品 | 在线播放黄色片 | 欧美91看片特黄aaaa | 国产午夜探花 | 天天舔夜夜操 | 欧美成人激情 | 欧美精品一区二区性色 | 成人免费看片a | 一本视频在线观看 | 日日噜噜噜噜久久久精品毛片 | 最新av在线免费观看 | 色视频在线观看 | 午夜色片| 嫩草影院在线观看网站成人 | 国产乱淫a∨片免费观看 | 91精品国产综合久久婷婷香蕉 |