反范式的優點和缺點
反范式化的schema 因為所有數據都在一張表中可以很好地避免關聯
如果不需要關聯表則對大部分查詢最差的情況即使表沒有使用索引是全表掃描當數據比內存大時這可能比關聯要快得多因為這樣避免了隨機I/O
要更有效地執行這個查詢MySQL 需要掃描message 表的published 字段的索引對於每一行找到的數據將需要到user 表裡檢查這個用戶是不是付費用戶如果只有一小部分用戶是付費賬戶那麼這是效率低下的做法
另一種可能的執行計劃是從user 表開始選擇所有的付費用戶獲得他們所有的信息並且排序但這可能更加糟糕
主要問題是關聯使得需要在一個索引中又排序又過濾如果采用反范式化組織數據將兩張表的字段合並一下並且增加一個索引(account_type published)就可以不通過關聯寫出這個查詢這將非常高效
mysql> SELECT message_textuser_name
> FROM user_messages
> WHERE account_type=premium
> ORDER BY published DESC
> LIMIT ;
返回目錄高性能MySQL
編輯推薦
ASPNET MVC 框架揭秘
Oracle索引技術
ASP NET開發培訓視頻教程
數據倉庫與數據挖掘培訓視頻教程
From:http://tw.wingwit.com/Article/program/MySQL/201311/29677.html