成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

通過索引優化MySQL語句的實例

數據庫 MySQL
MySQL索引可以讓我們的數據庫處理效率更高,而且可以通過索引優化MySQL語句,下面就為您介紹一個這樣的例子,供您參考。

通過索引,可以優化含有ORDER BY的MySQL語句,下面就為您介紹實現該功能的詳細方法,如果您對MySQL語句方面感興趣的話,不妨一看。

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

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];

這個MySQL語句,如果你仍然采用第一個例子中建立索引的方法,雖然可以用到索引,但是效率不高。更高效的方法是建立一個聯合索引 (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的值對應多個。

這個MySQL語句怎么優化呢?我暫時沒有想到什么好的辦法,看到網上有便宜提供的辦法,那就是將這個語句用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看看效果。
 

 

 

【編輯推薦】

MySQL用戶權限的取消

mysql索引比較分析

MySQL索引的用處

mysql索引的不足

MySql連接字符串的說明

責任編輯:段燃 來源: 互聯網
相關推薦

2010-10-08 16:20:35

MySQL語句

2010-10-14 16:27:56

MySQL隨機查詢

2010-05-31 10:26:27

2010-05-27 15:34:30

MySQL語句優化

2020-10-19 19:45:58

MySQL數據庫優化

2016-12-12 13:07:57

數據庫優化SQL

2017-07-25 12:07:14

MySQL索引SQL

2018-06-07 08:54:01

MySQL性能優化索引

2010-05-12 11:14:25

MySQL SQL優化

2018-04-09 14:25:06

數據庫MySQL索引

2024-04-17 12:58:15

MySQL索引數據庫

2024-10-09 23:32:50

2012-04-28 09:28:43

MySQL數據庫數據庫優化

2017-09-05 12:44:15

MySQLSQL優化覆蓋索引

2011-06-08 15:08:38

MySQLWhere優化

2010-06-03 09:24:46

Oracle

2010-10-12 14:53:31

mysql索引優化

2021-11-09 07:59:50

開發

2024-03-26 09:29:27

MySQLDDL

2010-05-27 16:12:10

MySQL索引
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线精品亚洲欧美日韩国产 | 国产精品无码永久免费888 | 一级免费a | 亚洲www.| 国产成人叼嘿视频在线观看 | 国产91久久精品一区二区 | 成人综合久久 | 不卡的av一区 | 欧美一二区 | 精品一区二区三区在线观看国产 | 亚洲国产成人精品女人久久久 | 日韩高清国产一区在线 | 欧美激情在线一区二区三区 | a级大毛片| 日本三级电影在线观看视频 | 日韩精品一区二区三区中文字幕 | 五月天激情综合网 | 成人久久久 | 欧洲国产精品视频 | 99精品一区二区 | 国产精品国产馆在线真实露脸 | 国产精品久久久久久婷婷天堂 | 亚洲色欲色欲www | 欧美一区二区三区在线看 | 999精品视频 | 亚洲欧美日韩电影 | 欧美国产大片 | 国产午夜三级一区二区三 | 自拍偷拍第一页 | 日本黄色片免费在线观看 | 蜜臀网| 欧美综合一区二区三区 | 国产区在线观看 | 久久婷婷国产麻豆91 | 亚洲精品一区二区三区在线 | a级毛片国产 | 一区二区三区在线 | 精品亚洲永久免费精品 | 成人免费观看男女羞羞视频 | 一区二区播放 | 久久久久久久久久久一区二区 |