反范式的优点和缺点
反范式化的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开发培训视频教程
数据仓库与数据挖掘培训视频教程