【Mysql 學習】LIMIT 的使用
--limit 的使用
select 。。。。[LIMIT offerset_start,row_count]其中offerset_start 表上記錄的起
limit rowstart,rowcount 類似與分頁查詢,rowstart是從第幾行開始,rowcount是包括此後幾行,
在一些情況中,當你使用LIMIT row_count而不使用HAVING時,MySQL將以不同方式處理查詢。
始偏移量,預設為0,只需記錄資料行就可以了。row_count為顯示的行數。
---顯示第一行。
mysql> select * from emp order by birdate desc limit 1;
+-------+----------+------------+--------+
| eid | ename | birdate | deptno |
+-------+----------+------------+--------+
| 10001 | zhangsan | 1988-09-27 | 1001 |
+-------+----------+------------+--------+
1 row in set (0.00 sec)
---顯示前兩行。
mysql> select * from emp order by birdate desc limit 2;
+-------+----------+------------+--------+
| eid | ename | birdate | deptno |
+-------+----------+------------+--------+
| 10001 | zhangsan | 1988-09-27 | 1001 |
| 10003 | lily | 1988-09-17 | 1003 |
+-------+----------+------------+--------+
2 rows in set (0.00 sec)
--顯示從第一行開始以後(不包括第一行)的三行資料。
注意limit顯示的時候不包括offerset_start那一行。如下面的offerset_start=1 則不包括第一行。
mysql> select * from emp order by birdate desc limit 1,3;
+-------+--------+------------+--------+
| eid | ename | birdate | deptno |
+-------+--------+------------+--------+
| 10003 | lily | 1988-09-17 | 1003 |
| 10002 | yangql | 1987-12-30 | 1003 |
+-------+--------+------------+--------+
2 rows in set (0.02 sec)
--顯示從第三行記錄開始,以後的三行,如果沒有足夠的資料,則顯示offerset_start以後的所有記錄。
mysql> select * from emp order by birdate desc limit 2,3;
+-------+--------+------------+--------+
| eid | ename | birdate | deptno |
+-------+--------+------------+--------+
| 10002 | yangql | 1987-12-30 | 1003 |
+-------+--------+------------+--------+
1 row in set (0.00 sec)
mysql> select * from emp order by birdate desc limit 1,1;
+-------+-------+------------+--------+
| eid | ename | birdate | deptno |
+-------+-------+------------+--------+
| 10003 | lily | 1988-09-17 | 1003 |
+-------+-------+------------+--------+
1 row in set (0.00 sec)
mysql> select * from emp order by birdate desc limit 1,2;
+-------+--------+------------+--------+
| eid | ename | birdate | deptno |
+-------+--------+------------+--------+
| 10003 | lily | 1988-09-17 | 1003 |
| 10002 | yangql | 1987-12-30 | 1003 |
+-------+--------+------------+--------+
2 rows in set (0.00 sec)
mysql> select * from emp order by birdate desc limit 0,1;
+-------+----------+------------+--------+
| eid | ename | birdate | deptno |
+-------+----------+------------+--------+
| 10001 | zhangsan | 1988-09-27 | 1001 |
+-------+----------+------------+--------+
1 row in set (0.00 sec)
mysql> select * from emp order by birdate desc limit 0,3;
+-------+----------+------------+--------+
| eid | ename | birdate | deptno |
+-------+----------+------------+--------+
| 10001 | zhangsan | 1988-09-27 | 1001 |
| 10003 | lily | 1988-09-17 | 1003 |
| 10002 | yangql | 1987-12-30 | 1003 |
+-------+----------+------------+--------+
3 rows in set (0.00 sec)
MySQL如何最佳化LIMIT
·如果你用LIMIT只選擇一些行,當MySQL選擇做完整的表掃描時,它將在一些情況下使用索引。
·如果你使用LIMIT row_count與ORDER BY,MySQL一旦找到了排序結果的第一個row_count行,將結束排序而不是排序整個表。如果使用索引,將很快。如果必須進行檔案排序(filesort),必須選擇所有匹配查詢沒有LIMIT子句的行,並且在確定已經找到第1個row_count行前,必須對它們的大部分進行排序。在任何一種情況下,一旦找到了行,則不需要再排序結果的其它部分,並且MySQL不再進行排序。
·當結合LIMIT row_count和DISTINCT時,MySQL一旦找到row_count個唯一的行,它將停止。
·在一些情況下,GROUP BY能透過順序讀取鍵(或在鍵上做排序)來解決,然後計算摘要直到關鍵字的值改變
。在這種情況下,LIMIT row_count將不計算任何不必要的GROUP BY值。
·只要MySQL已經傳送了需要的行數到客戶,它將放棄查詢,除非你正使用SQL_CALC_FOUND_ROWS。
·LIMIT 0將總是快速返回一個空集合。這對檢查查詢的有效性是有用的。當使用MySQL API時,它也可以用來得到結果列的列型別。
(該技巧在MySQL Monitor中不工作,只顯示Empty set;應使用SHOW COLUMNS或DESCRIBE)。
· 當伺服器使用臨時表來進行查詢時,使用LIMIT row_count子句來計算需要多少空間。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28916011/viewspace-1813596/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【Mysql學習】LIMIT的使用MySqlMIT
- mysql 使用技巧 分頁limitMySqlMIT
- Mysql LIMIT的用法MySqlMIT
- postgresql和mysql中的limit使用方法MySqlMIT
- MySQL大資料下Limit使用MySql大資料MIT
- MySQL下Limit使用及效能分析MySqlMIT
- 【Mysql學習】mysql的使用入門MySql
- 【Mysql 學習】mysql 的使用入門MySql
- MySQL中limit的用法MySqlMIT
- MySQL LIMIT 如何改寫成Oracle limitMySqlMITOracle
- 關於mysql 子查詢中 使用 limitMySqlMIT
- 【Mysql 學習】perror的使用方法MySqlError
- MySQL中ORDER BY與LIMIT一起使用(有坑)MySqlMIT
- 【Mysql 學習】Mysql 怎樣使用記憶體MySql記憶體
- 最佳化mysql的limit offset的例子MySqlMIT
- Laravel 中 offset,limit 的使用LaravelMIT
- SQL之limit子句的使用SQLMIT
- mysql limit語句優化MySqlMIT優化
- MySQL學習筆記---入門使用MySql筆記
- 解決MySQL使用limit偏移量較大效率慢的問題MySqlMIT
- mysql分頁-limit offset分頁MySqlMIT
- MySQL 5.7 LIMIT語句介紹MySqlMIT
- MySQL LIMIT 和 ORDER BY 最佳化MySqlMIT
- 學習MySQLMySql
- MySQL 學習MySql
- Mysql學習MySql
- MySQL學習筆記-使用Navicat操作MySQL資料庫MySql筆記資料庫
- 你知道MySQL的Limit有效能問題嗎MySqlMIT
- Access查詢實現Mysql的 limit 查詢MySqlMIT
- salesforce零基礎學習(一百零二)Limitation篇之 CPU LimitSalesforceMIT
- MYSQL學習(二) --MYSQL框架MySql框架
- 帶你讀 MySQL 原始碼:limit, offsetMySql原始碼MIT
- Mysql學習筆記2--使用入門MySql筆記
- MySQL 中 一條 order by index limit 語句的分析MySqlIndexMIT
- MySql中limit子查詢的解決辦法MySqlMIT
- 關於mysql中limit最佳化的問題MySqlMIT
- MT7688學習筆記(5)——OpenWrt下MySQL的使用筆記MySql
- MySQL學習 - 索引MySql索引