普通寫法:
select * from buyer where sellerid=100 limit 100000,5000
普通limit m,n的翻頁寫法,在越往後翻頁的過程中速度越慢,原因mysql會讀取表中的 前m+n條資料,m越大,效能就越差。
優化寫法:
select t1.* from buyer t1,
(select id from buyer sellerid=100 limit 100000,5000) t2
where t1.id=t2.id;
注意:需要在t表的sellerid欄位上建立索引,id為表的主鍵 create index ind_sellerid on buyer(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
典型子查詢
select first_name
from employees
where emp_no in
(select emp_no from salaries_2000 where salary = 5000);
mysql的處理邏輯是遍歷employees表中的每一條記錄,代入到子查詢中中去
改寫子查詢
select first_name
from employees emp,
(select emp_no from salaries_2000 where salary = 5000) sal
where emp.emp_no = sal.emp_no;
採用高效的 limit 寫法,避免分頁查詢給資料庫帶來效能影響子查詢在5.1,5.5版本中都存在較大風險,將子查詢改為關聯 使用mysql 5.6的版本,可以避免麻煩的子查詢改寫避免用 select * 查詢所有字段資料,只查詢需要的字段資料 Mysql十大經典案例 索引
問題描述 使用者系統開啟緩慢,資料庫 cpu 100 問題排查 發現資料庫中大量的慢sql,執行時間超過了2s 慢sql select id from user where user no 13772556391 limit 0,1 執行計畫 1.row id 1 select type table...
十大經典排序
每一次比較完就要立即交換 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。比較完所有...
佛家十大經典
佛家十大經典 經典一 一切皆為虛幻。經典二 不可說。有些話是不能說出來的。一旦失口,往往一絲脆弱的牽伴都會斷掉,縱然痛惜也 經典三 色即是空,空即是色。經典四 人生在世如身處荊棘之中,心不動,人不妄動,不動則不傷 如心動則人妄動,傷其身痛其骨,於是體會到世間諸般痛苦。經典五 一花一世界,一佛一如來。...