MySQL為什麼不要多表關聯?

xuexiaogang發表於2021-12-11

自己原文公眾號: https://mp.weixin.qq.com/s/NYEhQXgPA299dlyYNUmrOw

我個人是反對的,我覺得2個表關聯是正常的,單表最好。如果特殊最多3個表關聯,3個以上是不對的(效能不好,建議最佳化)。即使在Oracle上,不管MYSQL還是PostgesSQL。

      某個SQL執行了幾分鐘大致是這樣的select * from 6個表關聯 limit 70000,10000.

     最後Query_time: 255.707167  Lock_time: 0.002991 Rows_sent: 10000  Rows_examined: 8217255

        大家覺得不可能,最大的表才140萬左右,怎麼可能800萬的掃描。

這個以前講過,今天再次資料說話,重現一下。t1  t2  t3各100萬。


 結果請看,有幾個表就掃描了幾倍。上面這個最終顯示10條,但是掃描了300030 。就是100010X3

如果是10個表關聯,那就是100010X10

    所以,千萬要控制表的關聯數量,這是根本。如果歷史原因已經很多表了,那麼where條件一定要控制住,大表不要全表。如果都控制不住,那就可能要出問題了。

     表設計把控難度相對大,最好一開始就介入,結合需求設計。而不是把以前的專案的表拿過來用,然後再改。這樣需求和表就不在一個頻道上了。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/637517/viewspace-2847174/,如需轉載,請註明出處,否則將追究法律責任。

相關文章