中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL數據庫limit的使用方法

發布時間:2020-05-08 14:27:25 來源:億速云 閱讀:434 作者:三月 欄目:MySQL數據庫

下文主要給大家帶來MySQL數據庫limit的使用方法,希望這些文字能夠帶給大家實際用處,這也是我編輯MySQL數據庫limit的使用方法這篇文章的主要目的。好了,廢話不多說,大家直接看下文吧。

--------LIMIT基本理解--------

MySQL的Limit子句
  Limit子句可以被用于強制 SELECT 語句返回指定的記錄數。Limit接受一個或兩個數字參數。參數必須是一個整數常量。如果給定兩個參數,第一個參數指定第一個返回記錄行的偏移量,第二個參數指定返回記錄行的最大數目。
  

舉例說明:

//初始記錄行的偏移量是 0(而不是 1):

mysql> select * from table limit 5,10; 

詳解:檢索記錄行6-15,從第五行下面第六行開始,因為計算機開始數字是0,不是1,第六行開始往下顯示10行,到第15行。
  //為了檢索從某一個偏移量到記錄集的結束所有的記錄行,可以指定第二個參數為 -1:
  

mysql> select * from table limit 95,-1; 

詳解:檢索記錄行 96-last

  //如果只給定一個參數,它表示返回最大的記錄行數目。換句話說,LIMIT n 等價于 LIMIT 0,n:
  

mysql> select * from table limit 5;     //檢索前 5 個記錄行


實例說明:如何查找一個表排序后的倒數第3條數據。

select * from table_name order by column_name desc limit 2,1;                

//其實可以理解為,找逆序排序后的第3條數據。


其實有2中形式,一種是limit后面帶一個值,另一種是帶2個值。

下面以products產品表為例,進行說明:
1.select prod_name from products limit  5;                                //將返回從第1行開始的前5條數據。
2.select prod_name from products limit 5,5;                               //表示返回從行5開始的5行數據。第一個數為開始位置,第二個數為要檢索的行數。


所以,帶一個值的limit總是從第一行開始,給出的數為返回的行數。帶兩個值的limit可以指定從行號為第一個的位置開始的行數。


Limit的效率高?
  常說的Limit的執行效率高,是對于一種特定條件下來說的:即數據庫的數量很大,但是只需要查詢一部分數據的情況。
  高效率的原理是:避免全表掃描,提高查詢效率。
  

比如:

每個用戶的email是唯一的,如果用戶使用email作為用戶名登陸的話,就需要查詢出email對應的一條記錄。

select * from t_user where email=?;

上面的語句實現了查詢email對應的一條用戶信息,但是由于email這一列沒有加索引,會導致全表掃描,效率會很低。
  

select * from t_user where email=? limit 1;
加上LIMIT 1,只要找到了對應的一條記錄,就不會繼續向下掃描了,效率會大大提高。


Limit的效率低?

在一種情況下,使用limit效率低,那就是:只使用limit來查詢語句,并且偏移量特別大的情況

做以下實驗:

語句1:

select * from table limit 150000,1000;


語句2:

select * from table while id>=150000 limit 1000;


語句1為0.2077秒;語句2為0.0063秒

兩條語句的時間比是:語句1/語句2=32.968

  
  比較以上的數據時,我們可以發現采用where...limit....性能基本穩定,受偏移量和行數的影響不大,而單純采用limit的話,受偏移量的影響很大,當偏移量大到一定后性能開始大幅下降。不過在數據量不大的情況下,兩者的區別不大。
  所以應當先使用where等查詢語句,配合limit使用,效率才高
  ps:在sql語句中,limt關鍵字是最后才用到的。以下條件的出現順序一般是:where->group by->having-order by->limit


附錄相關語句:

OFFSET語句
  為了與 PostgreSQL 兼容,MySQL 也支持句法: LIMIT # OFFSET #。
  經常用到在數據庫中查詢中間幾條數據的需求
  比如下面的sql語句:
    ① selete * from testtable limit 2,1;
    ② selete * from testtable limit 2 offset 1;
  注意:
    1.數據庫數據計算是從0開始的
    2.offset X是跳過X個數據,limit Y是選取Y個數據
    3.limit  X,Y  中X表示跳過X個數據,讀取Y個數據
  這兩個都是能完成需要,但是他們之間是有區別的:
    ①是從數據庫中第三條開始查詢,取一條數據,即第三條數據讀取,一二條跳過
    ②是從數據庫中的第二條數據開始查詢兩條數據,即第二條和第三條。

Top子句
  TOP 子句用于規定要返回的記錄的數目。對于擁有數千條記錄的大型表來說,TOP 子句是非常有用的。
  在SQL Server數據庫中語法為:
    select top number|percent column_name(s) from table_name
  但是并非所有的數據庫系統都支持 TOP 子句,比如Oracle和MySQL,它們有等價的語法。
  在Oracle數據庫中語法為:
    select column_name(s) from table_name where rownum<= number
  在MySQL數據庫中語法為:
    SELECT column_name(s) FROM table_name LIMIT number

對于以上關于MySQL數據庫limit的使用方法,大家是不是覺得非常有幫助。如果需要了解更多內容,請繼續關注我們的行業資訊,相信你會喜歡上這些內容的。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

万年县| 乐至县| 华安县| 开封市| 唐山市| 西乡县| 舞阳县| 玉屏| 湘潭市| 军事| 泰和县| 哈巴河县| 利辛县| 马关县| 霞浦县| 会同县| 历史| 克东县| 五莲县| 老河口市| 邻水| 同心县| 基隆市| 张家川| 卓尼县| 拉萨市| 汶川县| 平远县| 灵璧县| 古交市| 沾益县| 长沙市| 正蓝旗| 河池市| 兴国县| 漳浦县| 宜兴市| 耿马| 江西省| 广南县| 高平市|