日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 优化300例_mysql的limit优化实例

發布時間:2025/3/8 数据库 11 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 优化300例_mysql的limit优化实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

測試環境

操作系統: debian linux

服務器版本: Mysql 5.0.24

Mysql數據庫的Qcache緩存關閉

數據庫表testtable的參數:

類型:???? MyISAM 大小:???? >80MB 記錄規模: >50000 字段數:?? >25個字段

id是主鍵 leibie字段上建有索引

進行數據分段測試

1>SQL不帶where條件的測試

1)50290行開始 顯示行 0 – 9 (10 總計, 查詢花費 0.2647 秒) SQL 查詢: SELECT * FROM `testtable` LIMIT 50290 , 10

顯示行 0 – 9 (10 總計, 查詢花費 0.0377 秒) SQL 查詢: SELECT * FROM testtable WHERE id >= ( SELECT id FROM `testtable` LIMIT 50290 , 1 ) LIMIT 1 , 10

2)30290行開始

顯示行 0 – 9 (10 總計, 查詢花費 0.1527 秒) SQL 查詢: SELECT * FROM `testtable` LIMIT 30290 , 10

顯示行 0 – 9 (10 總計, 查詢花費 0.0208 秒) SQL 查詢: SELECT * FROM testtable WHERE id >= ( SELECT id FROM `testtable` LIMIT 30290 , 1 ) LIMIT 1 , 10

3)20290行開始

顯示行 0 – 9 (10 總計, 查詢花費 0.1070 秒) SQL 查詢: SELECT * FROM `testtable` LIMIT 20290 , 10

顯示行 0 – 9 (10 總計, 查詢花費 0.0191 秒) SQL 查詢: SELECT * FROM testtable WHERE id >= ( SELECT id FROM `testtable` LIMIT 20290 , 1 ) LIMIT 1 , 10

4)10290行開始

顯示行 0 – 9 (10 總計, 查詢花費 0.0707 秒) SQL 查詢: SELECT * FROM `testtable` LIMIT 10290 , 10

顯示行 0 – 9 (10 總計, 查詢花費 0.0087 秒) SQL 查詢: SELECT * FROM testtable WHERE id >= ( SELECT id FROM `testtable` LIMIT 10290 , 1 ) LIMIT 1 , 10

5)5290行開始

顯示行 0 – 9 (10 總計, 查詢花費 0.0245 秒) SQL 查詢: SELECT * FROM `testtable` LIMIT 5290 , 10

顯示行 0 – 9 (10 總計, 查詢花費 0.0065 秒) SQL 查詢: SELECT * FROM testtable WHERE id >= ( SELECT id FROM `testtable` LIMIT 5290 , 1 ) LIMIT 1 , 10

6)2590行開始

顯示行 0 – 9 (10 總計, 查詢花費 0.0140 秒) SQL 查詢: SELECT * FROM `testtable` LIMIT 2590 , 10

顯示行 0 – 9 (10 總計, 查詢花費 0.0050 秒) SQL 查詢: SELECT * FROM testtable WHERE id >= ( SELECT id FROM `testtable` LIMIT 2590 , 1 ) LIMIT 1 , 10

7)1000行開始

顯示行 0 – 9 (10 總計, 查詢花費 0.0113 秒) SQL 查詢: SELECT * FROM `testtable` LIMIT 1000 , 10

顯示行 0 – 9 (10 總計, 查詢花費 0.0043 秒) SQL 查詢: SELECT * FROM testtable WHERE id >= ( SELECT id FROM `testtable` LIMIT 1000 , 1 ) LIMIT 1 , 10

8)500行開始 顯示行 0 – 9 (10 總計, 查詢花費 0.0062 秒) SQL 查詢: SELECT * FROM `testtable` LIMIT 500 , 10

顯示行 0 – 9 (10 總計, 查詢花費 0.0037 秒) SQL 查詢: SELECT * FROM testtable WHERE id >= ( SELECT id FROM `testtable` LIMIT 500 , 1 ) LIMIT 1 , 10

9)300行開始

顯示行 0 – 9 (10 總計, 查詢花費 0.0067 秒) SQL 查詢: SELECT * FROM `testtable` LIMIT 300 , 10

顯示行 0 – 9 (10 總計, 查詢花費 0.0055 秒) SQL 查詢: SELECT * FROM testtable WHERE id >= ( SELECT id FROM `testtable` LIMIT 300 , 1 ) LIMIT 1 , 10

10)100行開始

顯示行 0 – 9 (10 總計, 查詢花費 0.0055 秒) SQL 查詢: SELECT * FROM `testtable` LIMIT 100 , 10

顯示行 0 – 9 (10 總計, 查詢花費 0.0112 秒) SQL 查詢: SELECT * FROM testtable WHERE id >= ( SELECT id FROM `testtable` LIMIT 100 , 1 ) LIMIT 1 , 10

2>SQL帶where條件的測試(滿足條件的數據記錄>5000)

1)990行開始

顯示行 0 – 1 (2 總計, 查詢花費 0.0086 秒) SQL 查詢: SELECT * FROM `testtable` WHERE leibie = 1 LIMIT 990 , 10

顯示行 0 – 9 (10 總計, 查詢花費 0.0123 秒) SQL 查詢: SELECT * FROM `testtable` WHERE id >= ( SELECT id FROM `testtable` WHERE leibie = 1 LIMIT 990 , 1 ) LIMIT 1 , 10

2)2990行開始 顯示行 0 – 9 (10 總計, 查詢花費 0.0502 秒) SQL 查詢: SELECT * FROM `testtable` WHERE leibie = 1 LIMIT 2990 , 10

顯示行 0 – 9 (10 總計, 查詢花費 0.0357 秒) SQL 查詢: SELECT * FROM `testtable` WHERE id >= ( SELECT id FROM `testtable` WHERE leibie = 1 LIMIT 2990 , 1 ) LIMIT 1 , 10

3)5690行開始

顯示行 0 – 9 (10 總計, 查詢花費 0.0547 秒) SQL 查詢: SELECT * FROM `testtable` WHERE leibie = 1 LIMIT 5690 , 10

顯示行 0 – 9 (10 總計, 查詢花費 0.2101 秒) SQL 查詢: SELECT * FROM `testtable` WHERE id >= ( SELECT id FROM `testtable` WHERE leibie = 1 LIMIT 5690 , 1 ) LIMIT 1 , 10

測試結論:

不帶where條件時,limit后的數字小于100時,正常的SQL語句效率比較高;limit后的數字大于100時,優化后的效率是沒有優化的 1.2 – 7 倍. limit后的數字越大,優化后的效果越明顯.帶where條件時,優化的結果就不明顯了,甚至是優化的結果效率更差了.

另外還有一篇文章是用limit size來實現的,先是最出offset的值,然后再limit size來獲取信息,參考文章:http://blog.haohtml.com/archives/743

總結

以上是生活随笔為你收集整理的mysql 优化300例_mysql的limit优化实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。