国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數(shù)據(jù)庫(kù)技術(shù)|

服務(wù)器之家 - 數(shù)據(jù)庫(kù) - Mysql - MySQL分頁(yè)Limit的優(yōu)化過程實(shí)戰(zhàn)

MySQL分頁(yè)Limit的優(yōu)化過程實(shí)戰(zhàn)

2019-06-27 15:10舊夢(mèng)發(fā)癲 Mysql

在mysql中進(jìn)行分頁(yè)查詢時(shí),一般會(huì)使用limit查詢,下面這篇文章主要給大家介紹了關(guān)于MySQL分頁(yè)Limit優(yōu)化的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

在我們使用查詢語句的時(shí)候,經(jīng)常要返回前幾條或者中間某幾行數(shù)據(jù),這個(gè)時(shí)候怎么辦呢?不用擔(dān)心,mysql已經(jīng)為我們提供了這樣一個(gè)功能。

SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset 

LIMIT 子句可以被用于強(qiáng)制 SELECT 語句返回指定的記錄數(shù)。LIMIT 接受一個(gè)或兩個(gè)數(shù)字參數(shù)。參數(shù)必須是一個(gè)整數(shù)常量。如果給定兩個(gè)參數(shù),第一個(gè)參數(shù)指定第一個(gè)返回記錄行的偏移量,第二個(gè)參數(shù)指定返回記錄行的最大數(shù)目。初始記錄行的偏移量是 0(而不是 1): 為了與 PostgreSQL 兼容,MySQL 也支持句法: LIMIT # OFFSET #。

所以通常在查詢數(shù)據(jù)的時(shí)候,我們都會(huì)用到limit分頁(yè),因?yàn)檫@樣避免了全表查詢,會(huì)提高查詢效率。但是在一個(gè)表的數(shù)據(jù)量多了之后,分頁(yè)查詢會(huì)明細(xì)的變慢,下面來一起看看詳細(xì)的介紹吧

MySQL分頁(yè)Limit優(yōu)化

創(chuàng)建測(cè)試表card 2000萬數(shù)據(jù)

mysql> select count(*) from card;
+----------+
| count(*) |
+----------+
| 20000000 |
+----------+
1 row in set (0.00 sec)

-首先測(cè)試前1000行查詢速度

mysql> select * from card limit 1000,10;
+---------+--------------------------------------+
| card_id | card_number       |
+---------+--------------------------------------+
| 1001 | 13fc90a6-2e3b-11e8-ae62-9c5c8e6e37cf |
| 1002 | 13fc923e-2e3b-11e8-ae62-9c5c8e6e37cf |
| 1003 | 13fc93d5-2e3b-11e8-ae62-9c5c8e6e37cf |
| 1004 | 13fc956a-2e3b-11e8-ae62-9c5c8e6e37cf |
| 1005 | 13fc9702-2e3b-11e8-ae62-9c5c8e6e37cf |
| 1006 | 13fc9899-2e3b-11e8-ae62-9c5c8e6e37cf |
| 1007 | 13fc9a31-2e3b-11e8-ae62-9c5c8e6e37cf |
| 1008 | 13fc9bc6-2e3b-11e8-ae62-9c5c8e6e37cf |
| 1009 | 13fc9d5e-2e3b-11e8-ae62-9c5c8e6e37cf |
| 1010 | 13fc9ef5-2e3b-11e8-ae62-9c5c8e6e37cf |
+---------+--------------------------------------+
10 rows in set (0.00 sec)

-測(cè)試100萬之后的查詢

mysql> select * from card limit 1000000,10;
+---------+--------------------------------------+
| card_id | card_number       |
+---------+--------------------------------------+
| 1000001 | 2d87021a-2e3b-11e8-ae62-9c5c8e6e37cf |
| 1000002 | 2d8703ac-2e3b-11e8-ae62-9c5c8e6e37cf |
| 1000003 | 2d87053b-2e3b-11e8-ae62-9c5c8e6e37cf |
| 1000004 | 2d8706cd-2e3b-11e8-ae62-9c5c8e6e37cf |
| 1000005 | 2d87085f-2e3b-11e8-ae62-9c5c8e6e37cf |
| 1000006 | 2d8709f1-2e3b-11e8-ae62-9c5c8e6e37cf |
| 1000007 | 2d870b83-2e3b-11e8-ae62-9c5c8e6e37cf |
| 1000008 | 2d870d18-2e3b-11e8-ae62-9c5c8e6e37cf |
| 1000009 | 2d870eaa-2e3b-11e8-ae62-9c5c8e6e37cf |
| 1000010 | 2d871039-2e3b-11e8-ae62-9c5c8e6e37cf |
+---------+--------------------------------------+
10 rows in set (0.18 sec)

-測(cè)試1000萬之后的查詢

mysql> select * from card limit 10000000,10;
+----------+--------------------------------------+
| card_id | card_number       |
+----------+--------------------------------------+
| 10000001 | b11ad76c-2e49-11e8-ae62-9c5c8e6e37cf |
| 10000002 | b11aefd5-2e49-11e8-ae62-9c5c8e6e37cf |
| 10000003 | b11af868-2e49-11e8-ae62-9c5c8e6e37cf |
| 10000004 | b11b0031-2e49-11e8-ae62-9c5c8e6e37cf |
| 10000005 | b11b07ad-2e49-11e8-ae62-9c5c8e6e37cf |
| 10000006 | b11b0f0f-2e49-11e8-ae62-9c5c8e6e37cf |
| 10000007 | b11b1669-2e49-11e8-ae62-9c5c8e6e37cf |
| 10000008 | b11b1db2-2e49-11e8-ae62-9c5c8e6e37cf |
| 10000009 | b11b24fa-2e49-11e8-ae62-9c5c8e6e37cf |
| 10000010 | b11b2c37-2e49-11e8-ae62-9c5c8e6e37cf |
+----------+--------------------------------------+
10 rows in set (1.29 sec)

可以看到越到后面查詢效率會(huì)越低。因?yàn)樵诓樵?00萬之后的數(shù)據(jù)的時(shí)候,mysql會(huì)首先查詢100萬零10條數(shù)據(jù),然后截取后面的十條數(shù)據(jù)。這些就造成的性能的降低。

那么怎么去避免這個(gè)掃描100萬條數(shù)據(jù)呢。我們可以明確的知道,100萬之后的主鍵是大于100萬的。所以我們可以將sql改寫,讓其用到索引,降低掃描的行數(shù)

mysql> select * from card where card_id>=1000000 limit 10;
+---------+--------------------------------------+
| card_id | card_number       |
+---------+--------------------------------------+
| 1000000 | 2d870088-2e3b-11e8-ae62-9c5c8e6e37cf |
| 1000001 | 2d87021a-2e3b-11e8-ae62-9c5c8e6e37cf |
| 1000002 | 2d8703ac-2e3b-11e8-ae62-9c5c8e6e37cf |
| 1000003 | 2d87053b-2e3b-11e8-ae62-9c5c8e6e37cf |
| 1000004 | 2d8706cd-2e3b-11e8-ae62-9c5c8e6e37cf |
| 1000005 | 2d87085f-2e3b-11e8-ae62-9c5c8e6e37cf |
| 1000006 | 2d8709f1-2e3b-11e8-ae62-9c5c8e6e37cf |
| 1000007 | 2d870b83-2e3b-11e8-ae62-9c5c8e6e37cf |
| 1000008 | 2d870d18-2e3b-11e8-ae62-9c5c8e6e37cf |
| 1000009 | 2d870eaa-2e3b-11e8-ae62-9c5c8e6e37cf |
+---------+--------------------------------------+
10 rows in set (0.00 sec)

這樣就可以很大的提高查詢效率

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)服務(wù)器之家的支持。

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 99riav在线| 亚洲视频在线免费观看 | 综合久久综合久久 | 日韩欧美一区二区视频 | 99在线热视频 | 日韩国产免费观看 | 国产精品永久免费视频 | av超碰| 超碰在线9| 国产精品高清在线 | 免费观看av毛片 | 成人免费观看cn | 亚洲伊人久久综合 | 污色视频在线观看 | 成人一区二区在线 | 精品国产乱码久久久久久1区2区 | 在线观看的av | 成人日韩av| 日韩国产欧美一区 | 亚洲精品一区二区三区在线观看 | 国产精品毛片久久久久久久 | 日韩中文字幕一区 | 国产日韩视频 | 久久网站热最新地址 | 99这里只有精品视频 | 四虎免费紧急入口观看 | 欧美午夜一区二区三区免费大片 | 91精品视频导航 | 久久久久久九九九 | 欧美黑人狂躁日本寡妇 | 欧美综合一区二区三区 | 国产一区二区久久 | 超碰在线9| 亚洲一区三区 | 麻豆国产一区二区三区 | 精品国产欧美一区二区 | 日韩精品免费在线观看 | 国产精品久久久久久久午夜 | 久久亚洲精品中文字幕 | 久久精品中文 | 狠狠操av |