欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mysql 基礎查詢語句,MySQL中一條排序語句order

錢淋西2年前25瀏覽0評論
mysql 基礎查詢語句,MySQL中一條排序語句order?

MySQL長期以來對索引的建立只允許正向asc存儲,就算建立了desc,也是忽略掉。

比如對于以下的查詢,無法發揮索引的最佳性能。

查詢一:select * from tb1 where f1 = ... order by id desc;查詢二:

2. select * from tb1 where f1 = ... order by f1 asc , f2 desc;

那對于上面的查詢,尤其是數據量和并發到一定峰值的時候,則對OS的資源消耗非常大。一般這樣的SQL在查詢計劃里面會出現using filesort等狀態。

比如針對下面的表t1,針對字段rank1有兩個索引,一個是正序的,一個是反序的。不過在MySQL 8.0 之前的版本都是按照正序來存儲。

按照rank1 正向排序的執行計劃,

按照rank1 反向排序的執行計劃,

從執行計劃來看,反向比正向除了extra里多了Using temporary; Using filesort這兩個,其他的一模一樣。這兩個就代表中間用到了臨時表和排序,一般來說,凡是執行計劃里用到了這兩個的,性能幾乎都不咋地。除非我這個臨時表不太大,而用于排序的buffer也足夠大,那性能也不至于太差。那這兩個選項到底對性能有多大影響呢?