MySQL語句的優化

2021-09-11 18:58:38 字數 1235 閱讀 3585

1、使用limit

當不需要取出全部資料時,在查詢後面加上limit限制。

2、select *

每次看到select * 的時候都需要用懷疑的眼光審視,是不是真的需要返回全部的列。

3、重複查詢相同的資料

4、列表in()的比較

相對於or,in()的處理速度更快。

5、分解關聯查詢

對於一些複雜的關聯查詢可以拆分為多個簡單查詢。這樣可以讓快取的效率更高;執行單個查詢可以減少鎖的競爭;減少冗餘記錄的查詢;查詢本身效率也可能會有所提公升。

6、關聯子查詢

慎用關聯子查詢,特別是where條件中包含in()的子查詢。

7、優化union查詢

(select id, name from a order by id)

union all

(select id, name from b order by id)

order by id limit 20;

上面這個語句是先查詢所有滿足條件的資料,存放臨時表中,再從臨時表中取出20條資料。

這個語句可以優化成:

(select id, name from a order by id limit 20)

union all

(select id, name from b order by id limit 20)

order by id limit 20;

優化後的語句是分別查詢20條資料存放臨時表中,總共40條資料,再從臨時表中取出20條資料。

8、min()和max()優化

對於min()和max()查詢,mysql的優化做的並不好。使用時往往會造成全表掃瞄。如:

select max(id) from a where name = '***';
可以使用limit來優化查詢:

select id from a where name = '***' order by id desc limit 1;
9、使用索引查詢

這個可以參考我的另一篇部落格:

mysql 語句優化例項 MySQL 語句優化例項

優化 limit 分頁 執行耗時 1.379s select from vio basic domain info limit 1000000,10 處理分頁慢查詢的方式一般有以下幾種 思路一 構造覆蓋索引 思路二 優化 offset 無法用上覆蓋索引,那麼重點是想辦法快速過濾掉前 100w 條資料...

mysql語句優化原則 MySQL語句優化的原則

1 使用索引來更快地遍歷表。預設情況下建立的索引是非群集索引,但有時它並不是最佳的。在非群集索引下,資料在物理上隨機存放在資料頁上。合理的索引設計要建立在對各種查詢的分析和 上。一般來說 a.有大量重複值 且經常有範圍查詢 和order by group by發生的列,可考慮建立群集索引 b.經常同...

mysql語句優化原則 mysql語句優化原則

有時候發現資料量大的時候查詢起來效率就比較慢了,學習一下mysql語句優化的原則,自己在正常寫sql的時候還沒注意到這些,先記錄下來,慢慢一點一點的學,加油!這幾篇部落格寫的都可以 使用索引的原則 1.最左字首匹配原則。mysql會一直向右匹配直到遇到範圍查詢 不會用到b的索引 where a 1 ...