mysql越篩越少 MySQL語句優化補充(二)

2021-10-19 19:50:11 字數 1533 閱讀 7233

除了增加索引外,還有很多注意的問題。

1、不要在語句**現計算

2、查詢條件資料型別一致

為了測試把其中的乙個訂單id 改為 201903121704170005,看下圖不同的查詢:

顯然oid=201903121704170005比 oid=』201903121704170005』長很多,因為原來的oid 的字段型別是varchar,而不是數值型。分析一下:

型別不一致的第一條,沒有走索引。

3、不要使用like左模糊查詢

左模糊不走索引。

右模糊不影響索引的使用

4、select 避免使用*查詢所需欄位

需要什麼欄位就查什麼字段,避免使用*。

5、查詢一條語句時加上limit 1

但是,並不是所有的查詢加上limit 1,都能提高速度,我們再試一次:

顯然,前者加上limit 1 的查詢時間反而比後者沒加limit 1 花費更長的時間,即使差距只有0.00006s。那麼在什麼時候需要一條資料加上limit 1 的時候才能達到優化的效果呢?

請看下面的例子:

通過簡單的測試,當所選的記錄id越靠前,使用limit 1 時,效果越明顯。原因是,price 欄位在沒有加索引的情況下,需要進行全表掃瞄,加上limit 1,只要找到了對應的一條記錄,就不會繼續向下掃瞄了,效率會大大提高。 limit 1適用於查詢結果為1條(也可能為0)會導致全表掃瞄的的sql語句。

再看一下使用主鍵作為條件時,使用limit 1

從結果看來,效果不是特別明顯,而時候反而加上limit 1,效率反而降低。原因是 sql 語句執行順序為 select 查詢完結果之後再進行 limit 1篩選。

所以,建議使用limit 1 最好是用在沒加索引的where條件下。

mysql語句高階 Mysql高階SQL語句

show columns from table name from database name 或show columns from database name.table name 或show fields 解釋 顯示表中列名稱 和 desc table name 命令的效果是一樣的 檢視連線數,...

mysql執行語句 mysql執行sql語句過程

流程概述 mysql得到sql語句後,大概流程如下 1.sql的解析器 負責解析和 sql 2.預處理器 對解析後的sql樹進行驗證 3.查詢優化器 得到乙個執行計畫 4.查詢執行引擎 得到資料結果集 5.將資料放回給呼叫端。流程圖如下所示 分發器及快取階段 首先,如果系統的快取功能開啟著的話,sq...

怎麼查詢mysql的語法 MySQL查詢語法

select distinct productname from custom where product price between 5 and 10 order by product price desc product name limit 3 offset 1 limit 限定從1行開始選出...