SQL 語句執行很慢的原因

2022-08-16 11:39:10 字數 413 閱讀 3986

刷髒頁有下面4種場景(後兩種不用太關注「效能」問題):

有索引但是最終卻選擇全表掃瞄的原因:

例如以下sql:

select * from t where 100 < c and c < 100000;

索引的選擇判斷**於系統的**,也就是說,如果要走 c 字段索引的話,系統會**走 c 字段索引大概需要掃瞄多少行。如果**到要掃瞄的行數很多(大概接近於20%),它可能就不走索引而直接掃瞄全表了。因為索引c將標識多一次的輔助索引的查詢,造成io的增多。

系統判斷是否走索引,掃瞄行數的**其實只是原因之一,這條查詢語句是否需要使用使用臨時表、是否需要排序等也是會影響系統的選擇的。

SQL語句執行很慢的原因

資料庫在重新整理髒頁 當我們要往資料庫插入一條資料 或者要更新一條資料的時候,我們知道資料庫會在記憶體中把對應欄位的資料更新了,但是更新之後,這些更新的字段並不會馬上同步持久化到磁碟中去,而是把這些更新的記錄寫入到 redo log 日記中去,等到空閒的時候,在通過 redo log 裡的日記把最新...

一條SQL語句執行很慢的原因有哪些?

一直很慢的情況 資料庫自己選錯索引了 總結一條 sql 語句執行的很慢,那是每次執行都很慢呢?還是大多數情況下是正常的,偶爾出現很慢呢?所以我覺得,我們還得分以下兩種情況來討論。1 大多數情況是正常的,只是偶爾會出現很慢的情況。2 在資料量不變的情況下,這條sql語句一直以來都執行的很慢。針對這兩種...

一條 sql 語句執行的很慢的原因有哪些?

說實話,這個問題可以涉及到 mysql 的很多核心知識,可以扯出一大堆,就像要考你計算機網路的知識時,問你 輸入url回車之後,究竟發生了什麼 一樣,看看你能說出多少了。開始裝逼 分類討論 一條 sql 語句執行的很慢,那是每次執行都很慢呢?還是大多數情況下是正常的,偶爾出現很慢呢?所以我覺得,我們...