記一條子查詢的SQL優化

2021-08-27 09:07:57 字數 582 閱讀 1352

表a 中有上百萬條記錄,且不斷有新記錄插入。

現在要彙總此表中小於某個時間的記錄條數,sql兩種寫法如下:

寫法一

select count(*)

from a

where date < to_date('20100101','yyyymmdd') ;

寫法二

select count(*)

from ( select *

from a

where date < to_date('20100101','yyyymmdd')

) ;

結果發現:

寫法一等了十多分鐘都不見有結果出來,而寫法二一分鐘左右就出了結果。

原因應該是子查詢先查出乙個子結果集然後進行聚合操作,而非子查詢的寫法應該是邊匹配邊聚合

一條sql 語句的優化

第二個版本 一條sql搞定,使用巢狀查詢,費時2 3分鐘 select a.indexid,c.title,c.createdtime,c.intro,d.picurl,e.src,e.size,e.info from mms content index a,mms index node b,mms...

Mysql 查詢當前資料上一條和下一條的記錄

獲取當前檔案上一條與下一條記錄的原理是上一條的sql語句,從news表裡按從大到小的順序選擇一條比當前id小的新聞,下一條的sql語句,從news表裡按從小到大的順序選擇一條比當前id大的新聞。如果id是主鍵或者有索引,可以直接查詢 方法1 sql view plain copy 1.select ...

Mysql 查詢當前資料上一條和下一條的記錄

獲取當前檔案上一條與下一條記錄的原理是上一條的sql語句,從news表裡按從大到小的順序選擇一條比當前id小的新聞,下一條的sql語句,從news表裡按從小到大的順序選擇一條比當前id大的新聞。如果id是主鍵或者有索引,可以直接查詢 方法1 1.select from table a where i...