mysql limit語句優化
形如下表:
CREATE TABLE `tbl` (
`id` int(10) unsigned NOT NULL,
`v_state` tinyint(1) NOT NULL DEFAULT '1',
`log_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
初始化20w條資料;
mysql> explain SELECT SQL_NO_CACHE * from tbl ORDER BY id ASC LIMIT 99999,20 \G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: tbl
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 99999
Extra: Using filesort
1 row in set (0.00 sec)
ERROR:
No query specified
從上面看沒有用到索引,掃描了99999行,且還用到了排序;
對應轉換sql如下:
mysql>explain
select *
from tbl
where id>=(
select SQL_NO_CACHE id from tbl order by id asc limit 99999,1)limit 20 \G;
相對而言,執行消耗時間比直接limit要少;
CREATE TABLE `tbl` (
`id` int(10) unsigned NOT NULL,
`v_state` tinyint(1) NOT NULL DEFAULT '1',
`log_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
初始化20w條資料;
mysql> explain SELECT SQL_NO_CACHE * from tbl ORDER BY id ASC LIMIT 99999,20 \G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: tbl
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 99999
Extra: Using filesort
1 row in set (0.00 sec)
ERROR:
No query specified
從上面看沒有用到索引,掃描了99999行,且還用到了排序;
對應轉換sql如下:
mysql>explain
select *
from tbl
where id>=(
select SQL_NO_CACHE id from tbl order by id asc limit 99999,1)limit 20 \G;
相對而言,執行消耗時間比直接limit要少;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26855487/viewspace-763406/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL 5.7 LIMIT語句介紹MySqlMIT
- MYSQL SQL語句優化MySql優化
- MySQL——優化ORDER BY語句MySql優化
- mysql 優化常用語句MySql優化
- MySQL之SQL語句優化MySql優化
- mysql 語句的索引和優化MySql索引優化
- 淺談mysql配置優化和sql語句優化MySql優化
- MySQL系列6 - join語句的優化MySql優化
- MySQL利用索引優化ORDER BY排序語句MySql索引優化排序
- MySQL 中 一條 order by index limit 語句的分析MySqlIndexMIT
- 《MySQL慢查詢優化》之SQL語句及索引優化MySql優化索引
- limit優化MIT優化
- SQL語句優化SQL優化
- MySql 學習筆記一:SQL語句優化MySql筆記優化
- sql語句效能優化SQL優化
- SQL語句的優化SQL優化
- 求助:SQL語句優化SQL優化
- 淺析MySQL語句優化中的explain引數MySql優化AI
- Mysql 52條SQL語句效能優化策略彙總MySql優化
- MySql常用30種SQL查詢語句優化方法MySql優化
- SQL Server優化之SQL語句優化SQLServer優化
- SQL優化:limit分頁優化SQL優化MIT
- MySQL 52個SQL效能優化策略SQL語句彙總MySql優化
- MySQL大資料量快速插入方法和語句優化MySql大資料優化
- update語句的優化方式優化
- SQL語句優化(轉載)SQL優化
- 常用SQL語句優化技巧SQL優化
- Oracle之sql語句優化OracleSQL優化
- 效能優化查詢語句優化
- SQL 語句的優化方法SQL優化
- mysql查詢語句優化工具MySql優化
- 資料庫效能優化之SQL語句優化資料庫優化SQL
- SQL優化之limit 1SQL優化MIT
- 優化 SQL 語句的步驟優化SQL
- 一個SQL語句的優化SQL優化
- Oracle SQL語句優化之UNIONOracleSQL優化
- SQL語句操作符優化SQL優化
- 關於sql語句的優化SQL優化