1. 程式人生 > >select語句沒有where條件,limit慢咋辦?

select語句沒有where條件,limit慢咋辦?

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;
    上面標紅的兩個SQL不要用!!!

select語句沒有where條件,limit慢咋辦?