一條sql語句為何執行這麼慢

2021-09-25 05:32:57 字數 863 閱讀 6538

mysql是大多數場景下都可以使用的資料庫,大廠阿里很多都有用到,大家有沒有遇到一條sql語句執行速度很慢的情況呢,下面就我自己掌握的技能未大家分析分析,不足請補充指教。

![啟動mysql](

select * from users where id>2 (*星號為了書寫方便)

剛好你的 id 欄位上沒有索引,只能走全表掃瞄了,所以,這回導致這條查詢語句很慢。

select * from users where id-1>2 (*星號為了書寫方便)

在大於表示式左邊進行運算操作,導致id有索引也不會走索引,在表示式右邊不會造成這種情況 where id > 2+1

這種情況和第二種比較類似,在表示式左邊進行運算操作;

這個是有存在主鍵索引和非主鍵索引的情況,主鍵索引存的的是整個主鍵字段資料,非主鍵索引存的是主鍵欄位的值,當where表示式後面的條件使用非主鍵欄位時,有可能造成不走索引時根據非主鍵索引字段取樣基數決定的,這一塊不是很懂,請大家自行查詢資料

1,這樣的情況有可能是重新整理髒頁造成的,在插入修改資料時,mysql會首先修改記憶體中的資料,然後記錄redo log 日誌,空閒時才會通過redo log 日誌把資料寫到磁碟。

2,遇到資料庫鎖,行鎖之類的,show processlist命令檢視狀態情況

2 2 執行一條SQL語句

對資料庫執行一條sql語句 1 mixed mysqli query mysqli link,string query,int resultmode mysqli store result 1 對於insert,update,delete等不會返回資料的sql語句,在執行沒有錯誤時返回true 2 ...

一條SQL語句如何被執行

select from t where id 10 寫乙個查詢語句不難,但你知道一條sql語句被執行的過程嗎?下圖是mysql的基本架構圖。server層類似中介軟體,主要接受使用者請求,解析請求等。儲存引擎則是底層核心,負責資料的訪問。客戶端要想使用mysql,必須先和mysql建立乙個連線,聯結...

一條SQL語句的執行過程

1.1連線層 提供連線協議 tcp ip,socket 提供驗證 使用者 密碼 ip socket 提供專用連線線程 接收使用者sql,返回結果 通過以下語句可以檢視鏈結執行緒的基本情況 mysql show processlist 1.2sql層 重點 接收上層傳送的sql語句 語法驗證模組 驗證...