普通寫法:
select*from t where sellerid=
100 limit 100000,20
普通limit m,n的翻頁寫法,往往在越往後翻頁的過程中速度越慢,原因mysql會讀取表中的前m+n條資料, m越大,效能就越差:
優化寫法:
select t1.*from t t1, (select id from t sellerid=
100 limit 100000,20) t2 where t1.id=t2.id;
優化後的翻頁寫法,先查詢翻頁中需要的n條資料的主鍵id,在根據主鍵id回表查詢所需要的n條資料,此過 程中查詢n條資料的主鍵id在索引中完成
注意:需要在t表的sellerid欄位上建立索引 create index ind_sellerid on t(sellerid);
案例如下:
原始語句:
select id, ... from buyer where sellerid =765922982
and gmt_modified >=
'1970-01-01 08:00:00
'and gmt_modified <=
'2013-06-05 17:11:31
' limit 255000, 5000 ;
優化後語句:
select t2.*from (select id from buyer where sellerid =
765922982
and gmt_modified >=
'1970-01-01 08:00:00
'and gmt_modified <=
'2013-06-05 17:11:31
' limit 255000, 5000)t1, buyer t2 where t1.id=t2.id ;
經典資料庫問題
1.快速填充數字輔助表 倍增,平方根,平方 2.獲取已有範圍和缺失範圍 3.獲取每個員工最新的3個訂單 4.統計字串內某子字串出現的次數 利用replace函式 5.實現except all 6.拆分元素 table usetempdb goif object id dbo.arrays isnot...
資料庫分頁,資料重複問題
問題描述 查詢資料分頁時,查詢的資料有時候前一頁和後一頁的資料會有重複問題 當sql中order by待排序字段值相同時,系統對資料的排序可能變得隨機,即一會兒這條資料在前面,一會兒這條資料在後面了 所以當翻頁的時候我們很容易便看到了重複的資料。sql中order by相同值結果亂序的具體原因 查閱...
傳統企業資料庫上雲案例分享
摘要 在網際網路的浪潮衝擊下,很多傳統企業都選擇上雲。阿里雲在做基於網際網路的分布式應用,因此在傳統企業上雲的過程中,阿里雲也同樣面臨一些資料庫相關的各種衝擊和需求。在武漢雲棲大會上,阿里雲高階產品專家王偉做了名為 傳統企業資料庫上雲案例分享 的精彩演講。傳統企業應用缺點 傳統企業面臨很多架構變遷,...