1.用exists 代替 in
原理:exists 是存在乙個即返回乙個 而in是做全盤掃瞄得出所有條件內的資料
(高效)select
*from member where age>
18and
exists (select'x
'from person where member.name =person.name=
'cyao')
(低效)
select
*from member where age>
18and name in (select name from person where name=
'cyao
')
2.用exists 代替disitnct
(高效)select name ,age from mamber as d where
exists (select'x
'from person as e where e.name =
d.name)
(低效)
select
distinct name ,age from mamber as d ,person as e where e.name = d.name
3.盡量避免在select 後面 加*
4.盡量避免空值查詢 所有的字段盡量有設定預設值。例如num列預設值為0;判斷由where num is null -> where num=0
5.盡量使用數字型字段,例如status=1 啟用 status=2 代表刪除
6.避免頻繁建立和刪除臨時表,以減少系統表資源的消耗。
一些常用的 sql語句總結
查詢賣最好的商品名稱 select goods name from indent detail group by goods id order by sum goods num limit 1 查詢張三購買過的商品名稱 select goods name from user join indent ...
SQL語句的一些自我總結
不同的 sql join 除了我們在上面的例子中使用的 inner join 內連線 我們還可以使用其他幾種連線。下面列出了您可以使用的 join 型別,以及它們之間的差異。join 如果表中有至少乙個匹配,則返回行 left join 即使右表中沒有匹配,也從左表返回所有的行 right join...
一些關於SQL優化的總結
由於這個專案一直都是mysql所以寫點mysql的 1.資料儲存引擎的選擇,myisam 和 innodb 的選擇 innodb 一般都會選擇這個,但是如果真的涉及到一些不涉及增刪的表,可以考慮下myisam 該引擎不支援事務,不支援外來鍵,優點就是訪問速度快,如果都是查詢的話,這個儲存引擎可能會使...