MySQL SQL語句和索引優化

2021-10-10 12:44:08 字數 2310 閱讀 7340

索引優化

2.合理使用索引

慢查詢explain關鍵字

--子查詢

select

*from customerinfo

where customerid notin(

select customerid from salesinfo )

--連線查詢

select

*from customerinfo

left

join salesinfoon customerinfo.customerid=salesinfo.

customerid

where salesinfo.customerid is

null

select

*from tag

join tag_post on tag_post.tag_id=tag.id

join post on tag_post.post_id=post.id

where tag.tag=』mysql』;

select

*from tag where tag=』mysql』;

select

*from tag_post where tag_id=

1234

;select

*from post where id in

(123

,456

,567

,9989

,8909

);

為經常作為where條件的字段建立索引

新增索引的字段盡可能的保持唯一性

可考慮使用聯合索引並進行索引覆蓋

建立適當數量的索引

多個單列索引並不是最佳索引

符復合索引的最左字首原則

盡可能達成索引覆蓋

如果乙個索引包含所有需要的查詢欄位的值,直接根據索引的查詢結果返回資料,而無需讀表,能夠極大的提高效能。因此,可以定義乙個讓索引包含的額外的列,即使這個列對於索引來說是毫無作用的。

mysql的慢查詢,全名是慢查詢日誌

是mysql提供的一種日誌記錄,用來記錄在mysql中響應時間超過閥值的語句。

預設情況下不啟動這個日誌,需要手動設定引數來啟動。

如果不是調優需要的話,一般不建議啟動,開啟慢查詢日誌或多或少會帶來一定的效能影響

--查詢慢查詢日誌的開啟狀態和慢查詢日誌儲存的位置

show variables like '%quer%';

--設定慢查詢儲存的方式,可設定為table或者file,如果是table則慢查詢資訊會儲存到mysql庫下的slow_log表中,file則會儲存到檔案中

set globle log_output = file;

--臨時開啟

set global slow_query_log = on;

--臨時關閉

set global slow_query_log = off

--設定閥值(秒)

set long_query_time = 1;

explain(執行計畫),使用explain關鍵字可以模擬優化器執行sql查詢語句,從而知道mysql是如何處理sql語句。explain主要用於分析查詢語句或表結構的效能瓶頸。

屬性含義

id在⼀個⼤的查詢語句中每個select關鍵字都對應⼀個唯⼀的id

select_type

select關鍵字對應的那個查詢的型別

table

表名partitions

匹配的分割槽資訊

type針對單錶的訪問⽅法

possible_keys可能⽤到的索引

key實際上使⽤的索引

key_len

實際使⽤到的索引⻓度

ref當使⽤索引列等值查詢時,與索引列進⾏等值匹配的物件資訊

rows預估的需要讀取的記錄條數

filtered

某個表經過搜尋條件過濾後剩餘記錄條數的百分⽐

extra

⼀些額外的資訊

MySQL SQL語句優化

檢視表定義 show create table users 檢視表的索引 show index from users 你要獲取第乙個表的所有資訊,你說全表掃瞄快呢還是索引掃瞄快呢?所以當你查詢庫 包括left join中的臨時庫 的所有資訊時,資料庫會選擇最優方法 全表掃瞄!s表dept id na...

MySQL SQL 語句優化方法

對查詢進行優化,應盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索引.導致索引失效的操作 應盡量避免在 where 子句中使用 或 操作符,否則將引擎放棄使用索引而進行全表掃瞄.應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引...

MySQL SQL語句優化explain關鍵字

explain select from score where cno 3 105 and degree select degree from score where sno 109 id select type table type possible keys keykey len refrows...