我們一般做深度分頁的時候, sql語句往往如下:
select * from tb_test order by id desc limit 10000, 20;
limit 10000 , 20的意思掃瞄滿足條件的10020行,扔掉前面的10000行,返回最後的20行。如果是limit 1000000 , 100,需要掃瞄1000100 行,在乙個高併發的應用裡,每次查詢需要掃瞄超過100w行,不慢就沒天理了。
select * from tb_test where `year` = 2017 and id > ***x order by id desc limit 20;
這裡有個限制條件,就是我們只能實現頁碼順序滾動
如果不得不做深度分頁,還有乙個**技巧:
# 反例(耗時129.570s)select * from tb_test limit 20000000, 10;
# 正例(耗時5.114s)
select a.* from tb_test a, (select id from tb_test limit 20000000, 10) b where a.id = b.id;
如何解決oracle分頁查詢資料重複問題
本文 未作修改。oracle分頁查詢時,會遇到資料重複的問題,下面就教您乙個解決oracle分頁查詢資料重複問題的方法,希望對您能夠有所幫助。在oracle分頁查詢中,我們採用類似以下所示的公認的比較高效的資料庫分頁查詢語句 effective oracle by design中有描述 眾多orac...
深度學習如何解決生物除錯問題?
編者按 深度學習在近幾年實現了巨大的突破,而這一方法也被應用到越來越多的領域,用於解決過去在這些領域難以解決的問題。可以預見,在未來的科研中 深度學習 學科應用 將得到更廣闊的應用,生物學現在面臨著除錯的困難。生化系統 細胞 很複雜,深入研究它是十分有意義的。觀察你所了解的化合物是很有難度的,想要看...
如何解決mysql死鎖
見官方文件 可直接在mysql命令列執行 show engine innodb status g 檢視造成死鎖的sql語句,分析索引情況,然後優化sql 然後show processlist kill processid 另外可以開啟慢查詢日誌,linux下開啟需在my.cnf的 mysqld 裡面...