mysql子查詢和連接查詢
首先是in和Exist的區別,in是對內查詢的每個結果會去外層表裏面進行循環,Exist則是對外層的記錄去內層記錄裏面去遍歷,所以如果外查詢表比較大的話使用Exists,內查詢的表比較大的話使用in。
一 子查詢
1 MySQL從4.1版本開始支持子查詢,使用子查詢進行SELECT語句嵌套查詢,可以一次完成很多邏輯上需要多個步驟才能完成的SQL操作
2 子查詢雖然很靈活,但是執行效率並不高
3 執行子查詢時,SQL語句中進行嵌套了SQL語句, 這就類似於循環了
4 例如有兩張表, 我先查一張表,查一次, 然後拿這個結果去篩選查另一張表,查兩次
二 連接查詢(join)
1 可以使用連接查詢(JOIN)代替子查詢,連接查詢需要建立臨時表,,但因爲聯表操作不需要查詢數據, 只需要在聯表成新表之後查詢一次, 因此其速度比子查詢快
2 表關聯是可以利用兩個表的索引的,如果是用子查詢,至少第二次查詢是沒有辦法使用索引的
3 例如兩張表, 我先把兩張表拼在一起, 不查, 再查拼起來的新表, 查一次
總結:連接查詢效率高於子查詢!!!
seata和XA模式的區別
Nacos和Eureka的區別