Mysql十大經典案例 SQL優化

2021-09-27 09:53:31 字數 1739 閱讀 9651

普通寫法:

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...

十大經典排序

每一次比較完就要立即交換 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。比較完所有...

佛家十大經典

佛家十大經典 經典一 一切皆為虛幻。經典二 不可說。有些話是不能說出來的。一旦失口,往往一絲脆弱的牽伴都會斷掉,縱然痛惜也 經典三 色即是空,空即是色。經典四 人生在世如身處荊棘之中,心不動,人不妄動,不動則不傷 如心動則人妄動,傷其身痛其骨,於是體會到世間諸般痛苦。經典五 一花一世界,一佛一如來。...