1. 程式人生 > 資料庫 >Mysql的水平分表與垂直分表的講解

Mysql的水平分表與垂直分表的講解

在我上一篇文章中說過,mysql語句的優化有侷限性,mysql語句的優化都是圍繞著索引去優化的,那麼如果mysql中的索引也解決不了海量資料查詢慢的狀況,那麼有了水平分表與垂直分表的出現(我就是記錄一下自己的理解)

水平分表:

如上圖所示:另外三張表表結構是一樣的 只不過把資料進行分別存放在這三張表中,如果要insert 或者query 那麼都需要對id進行取餘 然後table名進行拼接,那麼就是一張完整的table_name

但是如果我需要對name進行分表呢 或者對email呢?

那麼就需要用MD5進行加密 因為MD5加密後是16進位制 那麼就就可以進行取餘,思路同上。

垂直分表:

為什麼需要進行垂直分表?

因為如果一張表中 有一個大欄位 而且並不是必須要展示的或者不是當前需要用的 那麼雖然沒有刻意去查詢 但是在根據id或者其他索引進行查詢的時候就會把大欄位一起查出來,會嚴重影響查詢的效能,所以才有的垂直分表

詳細請看下圖:

以上就是水平分表和垂直分表的一種思路,水平有限 不足之處 請指出 謝謝

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對我們的支援。如果你想了解更多相關內容請檢視下面相關連結