在我上一篇文章中说过,mysql语句的优化有局限性,mysql语句的优化都是围绕着索引去优化的,那么如果mysql中的索引也解决不了海量数据查询慢的状况,那么有了水平分表与垂直分表的出现(我就是记录一下自己的理解)

水平分表:

如上图所示:另外三张表表结构是一样的 只不过把数据进行分别存放在这三张表中,如果要insert 或者query 那么都需要对id进行取余 然后table名进行拼接,那么就是一张完整的table_name

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

那么就需要用MD5进行加密 因为MD5加密后是16进制 那么就就可以进行取余,思路同上。

垂直分表:

为什么需要进行垂直分表?

因为如果一张表中 有一个大字段 而且并不是必须要展示的或者不是当前需要用的 那么虽然没有刻意去查询 但是在根据id或者其他索引进行查询的时候就会把大字段一起查出来,会严重影响查询的性能,所以才有的垂直分表

详细请看下图:

更多相关文章

  1. MySQL系列多表连接查询92及99语法示例详解教程
  2. Linux下MYSQL 5.7 找回root密码的问题(亲测可用)
  3. MySQL 什么时候使用INNER JOIN 或 LEFT JOIN
  4. android从服务器下载文件(php+apache+win7+MySql)
  5. Android(安卓)自定义水平滚动的容器
  6. 【有图】android通过jdbc连接mysql(附文件)
  7. android水平循环滚动控件
  8. ScrollView常用属性汇总
  9. 面试之Android五种布局

随机推荐

  1. android 微信登录与分享集成
  2. RelativeLayout属性和使用, 实现上面view
  3. Android滑动冲突之完美实现RecycleView+
  4. 使用android--建立第一个APP程序
  5. Mac下配置Android NDK环境并搭建Cocos2d-
  6. 在android 下支持ntfs-3g
  7. Android之Android(安卓)apk动态加载机制
  8. Android菜单详解(五)——使用XML生成菜单
  9. 3G Android智能手机视频预览万里
  10. Android中sqlite数据库的简单使用