關於SQL的連接查詢

在sql語句中left join 的語法,select 字段 from 表a left 表b on 表a與表b的關聯字段 where 篩選條件,多張表進行關聯,只需要依次left join 即可,where的查詢條件過濾需要放在最後一步


基本使用環境:做關聯的表不能太大,如果可以左表放數據少的表,不要關聯太多的表,在關聯很多表時返回值字段能做到精簡就精簡


查詢原理:先將左表數據查詢出來,然後再依據 on 後面的條件查詢 右表,然後將左右表的所有字段都併爲一行即總列數爲所有關聯表列數相加


而關於數據條數(總行數):首先左表有的行一定會出現,即時右表沒有也會出現,只是右表的字段對應的值爲null,其次是右表中凡是關聯到的行都會出現

即時關聯的字段值是相同的也出現只是左表字段對應的值重複即可


使用要求:在使用left join操作時爲了保證數據不丟失,左表爲主數據表(不是數據量大表)
例子詳解:人員表   人員詳細信息表  這兩張表關聯,查詢人員的詳細信息操作,則人員爲主表,因爲人員不能缺少丟失 詳細信息如果沒有關聯到可以爲null
例如查詢人員詳細信息中地址的關聯信息(比如有哪些人,房價)則人員詳細信息表爲主表,還是因爲必須要保證所有的地址信息都要查詢出來,即時沒有關聯到數據

sql的優化:left join 在遵循基本的使用環境時基本是沒有問題的 但是當管理的表的數據量還是太大時就需要做一些基本的調優
調優的原來還是儘量縮小所關聯的表的大小,還有就是關聯時要設置索引進行關聯
例: select * bumen a left join (select * from memb where id=?) b on a.id=b.id 當memb表數據量過大時即可這樣操作來縮小所關聯表的大小,多張表的優化依此類推
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章