select語句沒有where條件,limit慢咋辦?
阿新 • • 發佈:2018-07-26
tween 條件 cto order by 優化 個數字 但是 table 時間 Select * from table limit 10慢了,表有100萬條數據,沒有where條件,就是慢了,如何優化
-
以sbtest1表為例,100萬數據
select from sbtest1 limit 10; 執行時間0.00sec
select from sbtest1 limit 550000,10; 執行時間0.99 sec
select * from sbtest1 limit 990000,10; 執行時間1.32 sec - 可以改寫sql為:不是我吹,絕對,沒的說,超級快
select * from sbtest1 where id between 990001 and 990010; - 看看執行計劃,我靠,才掃描10行,能不快嗎?千萬級表又算啥?
- 將sbtest1表提升至1000w條數據
-
隨便輸入兩個數字,0.02 sec很快!再看看下面隨便查100行的速度,也是超級快!
雖然不知道實際有沒有這麽寫,但是這種寫法確實是我覺得目前最效率的。 - 錯誤示範:
網上有很多教這種寫法:
select from sbtest1 where id >= (select id from sbtest1 limit 990000,1) limit 10;
大錯特錯,查出來的數據根本不一樣,如下
我試了試改良寫法,雖然取的數據正確,但是跟沒優化一樣慢!!!
select from sbtest1 where id >= (select id from sbtest1 order by id limit 990000,1) limit 10;
select語句沒有where條件,limit慢咋辦?