成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

為什么MySQL不推薦使用子查詢和JOIN?

數據庫 MySQL
對于mysql,不推薦使用子查詢和join是因為本身join的效率就是硬傷,一旦數據量很大效率就很難保證,強烈推薦分別根據索引單表取數據,然后在程序里面做join,merge數據。

[[419041]]

1.對于mysql,不推薦使用子查詢和join是因為本身join的效率就是硬傷,一旦數據量很大效率就很難保證,強烈推薦分別根據索引單表取數據,然后在程序里面做join,merge數據。

2.子查詢就更別用了,效率太差,執行子查詢時,MYSQL需要創建臨時表,查詢完畢后再刪除這些臨時表,所以,子查詢的速度會受到一定的影響,這里多了一個創建和銷毀臨時表的過程。

3.如果是JOIN的話,它是走嵌套查詢的。小表驅動大表,且通過索引字段進行關聯。如果表記錄比較少的話,還是OK的。大的話業務邏輯中可以控制處理。

4.數據庫是最底層的,瓶頸往往是數據庫。建議數據庫只是作為數據store的工具,而不要添加業務上去。

一、應用層關聯的優勢

讓緩存的效率更高。許多應用程序可以方便地緩存單表查詢對應的結果對象。如果關聯中的某個表發生了變化,那么就無法使用查詢緩存了,而拆分后,如果某個表很少改變,那么基于該表的查詢就可以重復利用查詢緩存結果了。

  •  將查詢分解后,執行單個查詢可以減少鎖的競爭。
  •  在應用層做關聯,可以更容易對數據庫進行拆分,更容易做到高性能和可擴展。
  •  查詢本身效率也可能會有所提升。查詢id集的時候,使用IN()代替關聯查詢,可以讓MySQL按照ID順序進行查詢,這可能比隨機的關聯要更高效。
  •  可以減少冗余記錄的查詢。在應用層做關聯查詢,意味著對于某條記錄應用只需要查詢一次,而在數據庫中做關聯查詢,則可能需
  •  要重復地訪問一部分數據。從這點看,這樣的重構還可能會減少網絡和內存的消艷。
  •  更進一步,這樣做相當于在應用中實現了哈希關聯,而不是使用MySQL的嵌套循環關聯。某些場景哈希關聯的效率要高很多。

二、應用層關聯的使用場景

  •  當應用能夠方便地緩存單個查詢的結果的時候
  •  當可以將數據分布到不同的MySQL服務器上的時候
  •  當能夠使用IN()的方式代替關聯查詢的時候
  •  并發場景多,DB查詢頻繁,需要分庫分表

三、不推薦使用join的原因

1.DB承擔的業務壓力大,能減少負擔就減少。當表處于百萬級別后,join導致性能下降;

2.分布式的分庫分表。這種時候是不建議跨庫join的。目前mysql的分布式中間件,跨庫join表現不良。

3.修改表的schema,單表查詢的修改比較容易,join寫的sql語句要修改,不容易發現,成本比較大,當系統比較大時,不好維護。

四、不使用join的解決方案

在業務層,單表查詢出數據后,作為條件給下一個單表查詢。也就是子查詢。會擔心子查詢出來的結果集太多。mysql對in的數量沒有限制,但是mysql限制整條sql語句的大小。通過調整參數max_allowed_packet ,可以修改一條sql的最大值。建議在業務上做好處理,限制一次查詢出來的結果集是能接受的。

五、join查詢的優勢

關聯查詢的好處是可以做分頁,可以用副表的字段做查詢條件,在查詢的時候,將副表匹配到的字段作為結果集,用主表去in它。但是問題來了,如果匹配到的數據量太大就不行了,也會導致返回的分頁記錄跟實際的不一樣,解決的方法可以交給前端,一次性查詢,讓前端分批顯示就可以了,這種解決方案的前提是數據量不太,因為sql本身長度有限。 

 

責任編輯:龐桂玉 來源: 數據庫開發
相關推薦

2024-11-12 10:30:54

Docker部署數據庫

2024-11-29 08:20:22

Autowired場景項目

2024-06-04 00:10:00

開發拷貝

2025-05-16 02:00:00

HashMapJava代碼

2024-09-12 08:32:42

2020-08-31 11:20:53

MySQLuuidid

2023-11-06 13:04:59

Python日志庫

2022-01-11 10:29:32

Docker文件掛載

2025-04-29 07:06:20

2020-12-15 10:00:31

MySQL數據庫text

2021-07-04 14:19:03

RabbitMQ消息轉換

2018-11-29 14:30:42

數據庫外鍵約束應用程序

2021-01-13 09:55:29

try-catch-fJava代碼

2022-09-26 10:26:27

FieldIDEASpring

2020-11-17 09:01:09

MySQLDelete數據

2024-03-11 11:02:03

Date類JavaAPI

2023-09-27 23:03:01

Java虛擬線程

2020-07-02 14:12:52

C++語言編程

2024-07-29 09:03:00

2021-10-13 14:06:46

MySQLUtf8符號
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美一区二区免费视频 | 毛片视频观看 | 欧美一区二区三区国产精品 | 国产日韩欧美在线观看 | 久热国产精品 | 男女羞羞视频在线免费观看 | 毛片视频网址 | 97在线超碰 | 欧美国产精品 | 国产99在线 | 欧美 | 精品久久久久久久久久久 | 中文字幕成人在线 | 性色在线| 久久91 | 拍拍无遮挡人做人爱视频免费观看 | 日日干夜夜操 | 老牛嫩草一区二区三区av | 黄色毛片大全 | 国产精品福利网站 | 中文字幕一区二区三区四区五区 | 亚洲高清视频在线观看 | 性欧美精品一区二区三区在线播放 | 日韩在线小视频 | 黄色小视频大全 | 亚洲国产成人久久综合一区,久久久国产99 | 国产精品久久久久久久模特 | 四虎影 | 日韩三级一区 | 黄色一级大片在线免费看产 | 人人人人爽 | 欧美九九九| 成人不卡 | 日韩欧美一区二区三区四区 | 亚洲欧美激情网 | 黄网站免费在线看 | 免费观看毛片 | 91视频在线观看免费 | 中文久久 | 久操伊人 | 亚洲精品久久久久久久久久吃药 | 91欧美激情一区二区三区成人 |