博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql数据库的水平分表与垂直分表实例讲解
阅读量:6183 次
发布时间:2019-06-21

本文共 492 字,大约阅读时间需要 1 分钟。

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

水平分表:

\

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

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

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

垂直分表:

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

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

详细请看下图:

\

以上就是水平分表和垂直分表的一种思路,水平有限 不足之处 请指出 谢谢

转载于:https://www.cnblogs.com/liliuguang/p/10935763.html

你可能感兴趣的文章
tornado实现异步计划任务及python常见计划任务方法
查看>>
常见的DOM操作
查看>>
nginx 虚拟主机配置
查看>>
模拟实现strncat
查看>>
使用组策略锁定 Outlook Anywhere 设置
查看>>
设置 LD_LIBRARY_PATH 变量
查看>>
[解析苹果官方文档]之[UIView Class Reference]
查看>>
线性表的链式存储C语言实现
查看>>
Illegal attempt to associate a collection with two open sessions
查看>>
OC基础之-Property(属性)和点语法
查看>>
RPM方式安装MySQL5.6
查看>>
tsung测试openfire时从CSV文件读取user信息
查看>>
把GBK编码的源代码转换成Utf-8编码的小程序
查看>>
Android xml资源文件中@、@android:type、@*、?、@+含义和区别
查看>>
004.面试技巧:人生最难的抉择
查看>>
学编程学IT教程之ArrayList
查看>>
子元素滚动,父元素不滚动
查看>>
mysql实现随机查询
查看>>
Command Patern
查看>>
Spring MVC 异构响应
查看>>