Mysql優化 SQL語句優化

2021-10-25 13:45:19 字數 1355 閱讀 1741

索引優化

where 字段、組合索引(最左字首)、索引下推(非選擇行 不加鎖)、索引覆蓋(不回表)、on兩邊、排序、分組…explain分析語句情況,看建立索引沒,或者建立錯誤,響應時間長的話可以看下慢查詢日誌

盡量不要用 *

查所有字段的話,select查詢列中的字段如果沒有索引的話,會造成回表

limit優化

limit優化的特點是截斷,就是可以停止全表掃瞄的,比如下面這個,肯定沒走索引的,1000w條資料,就走了20條,截斷了

原sql

這種sql語句和索引都沒關係了,可以對他進行優化,可以建立個索引或者利用主鍵索引(根據業務設計),利用索引的排序或者where條件快速定位和limit截斷的能力,讓他縮小掃瞄範圍

還可以利用小結果集關聯大結果集

count優化

count () 找普通索引 ,找到最小的那棵樹來遍歷,包含空值(mysql優化其實現,5.6版本)

count(1)和count(id)都是找到最小的那顆索引樹,因為innodb的聚集索引,非主鍵索引下面掛載的是id的值,所以會選擇乙個小的索引樹,因為主鍵索引下面掛載的是行資料,比非主鍵索引還是要大些的

count(非索引字段),找不到索引樹

前面這幾個count,如果是count(),不會將這個資料快取起來,這是innodb的特點,count()都是臨時計算。如果是count(字段)的話,是可以快取的。count()包含了空值的,count(字段)沒有包含空值,count(1)和count()是一樣的,忽略字段,包含空值

不用 mysql 內建的函式,因為內建函式不會建立查詢快取

比如: select * from user where birthday = now();

其他的一些遊優化

MySQL優化(二) 優化SQL語句

2.優化子查詢,派生表和檢視引用 3.優化information schema查詢 4.優化資料變更宣告 5.優化資料庫許可權 6.其他優化技巧 資料庫應用程式的核心邏輯是通過sql語句執行的,無論是直接通過直譯器發出還是通過api在後台提交。查詢以select 語句的形式執行資料庫中的所有查詢操作...

MySql優化sql語句效能

一.優化方面 可以從下面2個方面進行優化 1.減少io次數 2.減少cpu計算次數 二.常見sql命令誤區 1.count 1 和count primary key 優於 count 實際上count 計算操作做了優化 2.select a,b from 比 select a,b,c from 可以...

MySQL 中sql 語句 優化

參考文章 首先這個問題一直存在,但是在實際開發中還是寫出各種效能差sql。今天就一點點的來梳理一下,恰好我目前工作中的sql 寫的很慢,這篇文章剛好可以幫我去優化一下我的 1.乙個最大的原則就是能夠使得sql用到索引。怎麼用到索引,我們就來分析一下explain的用法 我關注的有乙個字段就是rows...