mysql中Where條件中欄位順序的重要性

2021-07-04 00:07:45 字數 644 閱讀 8327

在用mysql查詢資料庫的時候,連線了很多個用,發現非常慢。例如:

select … where p.languages_id = 1 and m.languages_id = 1 and c.languages_id = 1 and t.languages_id = 1 and p.products_id in (472,474)

這樣查詢需要20多秒,雖然在各個欄位上都建立了索引。用分析explain sql一分析,發現在第一次分析過程中就返回了幾萬條資料:

where p.languages_id = 1 ,然後再依次根據條件,縮小範圍。

而我改變一下where 欄位的位置之後,速度就有了明顯地提高:

where p.products_id in (472,474) and

p.languages_id = 1 and m.languages_id = 1 and c.languages_id = 1 and t.languages_id = 1

這樣,第一次的條件是p.products_id in (472,474),它返回的結果只有不到10條,接下來還要根據其它的條件來過濾,自然在速度上有了較大的提公升。

經過實踐發現,不要以為where中的字段順序無所謂,可以隨便放在哪,應該盡可能地第一次就過濾掉大部分無用的資料,只返回最小範圍的資料

Mysql中在where條件中對int欄位進行處理

今天操作mysql資料庫,進行select的時候發現,mysql可以直接對int欄位傳string型別值。如表student,欄位id int 可以select from student where id 12abc 發現可以查到id 12的記錄。原理 mysql會將傳入的string 要賦值給in...

PHP中MYSQL語句WHERE條件裡面使用變數

一般來說很多人喜歡這樣寫 資料庫查詢錯誤例子 username admin sql select from user where username username 但是這樣寫明顯在sql語句中是不行的,在sql語句中使用變數有專門的語法 單引號和大括號組合。正確的寫法應該是 資料庫查詢正確例子 變...

MySQL中的查詢過濾條件where

and,or,not between and 別名表示式 首先建立乙個表並新增如下資料,在下述查詢中均用到此表 create table student id char 36 primary key,name varchar 8 not null,age int 3 default 0,mobile...