如何快速查詢一張大表的前面資料

2022-05-13 06:12:57 字數 739 閱讀 5768

公司生產上面有一張表,裡面資料有:3486764條,每次想去查詢最新的幾條資料時總是很慢,以下為使用的語句:

select

*from txn_fin_txn_log t order

by t.id desc;

因為有order by語句會很慢,查詢出來將近1分鐘才能出來,有時候更長

經過腦海裡想了之後,記得以前有位大師(具體記不清是哪位大師)有過乙個案例,他對大資料查詢時,先將其中最大的主鍵id查詢出來,再做進一步處理,以下為我寫的的sql:

select

*from txn_fin_txn_log t where t.id >

(

select

max(s.id) -

1000000

from

txn_fin_txn_log s

) order

by id desc;

此時查詢100w條資料的最新資料0.547秒搞定,真是差別太大了。

後記:現在終於為何大師會先將表的主鍵id查詢出來,再進行進一步查詢,可能這種方案在對資料量比較少時,根本沒有任何好處,反而工作量還多了,但是對大資料就不一定了;這個需要有些前提,id是遞增的,而且查詢的範圍要控制的比較好,目前想到的分表是乙個比較好的方法可以解決此問題

總結:任何程式沒有絕對的對與錯,只有相對的對與錯,在適當的時候用適當的方法才是更好的;沒有最好,只有更好!

快速複製一張大表討論

有這樣的一類需求,快速複製一張表,而這張表的資料量又非常的大。比方說本來是分割槽表,要把它重新變成非分割槽表,怎麼能夠快速的完成這樣的操作呢?我下面給出2種大致的方法 第一,就是利用ctas方式來建立一張新錶,當然要想加快速度,在資料庫不是force logging的前提下,可以使用nologgin...

同步一張大表技術實現方案

目錄 1 背景 2 技術方案 3 技術方案修正 3.2 改寫分頁sql 4 參考資料 表中有乙個主鍵字段,主鍵id是有時間特性,按照時間公升序增長的,可以認為id是雪花演算法生成的id,目前表中有1億條資料,我們需要把這1億條資料同步到es中。我們將全表資料看成是乙個大的資料集,從邏輯上進行分頁,每...

mysq優化之(快速複製一張大資料的表)

一千萬條資料只花了兩分多鐘,這裡忘記截圖了 關閉了自動提交 關閉了唯一性檢查 load比傳統的insert效率高很多 蠕蟲複製500萬條資料只要1分多鐘的優化方式 innodb儲存引擎 關閉自動提交 set autocommit 0 關閉唯一性檢查 set unique checks 0 導完資料記...