登峰造极境

  • WIN
    • CSharp
    • JAVA
    • OAM
    • DirectX
    • Emgucv
  • UNIX
    • FFmpeg
    • QT
    • Python
    • Opencv
    • Openwrt
    • Twisted
    • Design Patterns
    • Mysql
    • Mycat
    • MariaDB
    • Make
    • OAM
    • Supervisor
    • Nginx
    • KVM
    • Docker
    • OpenStack
  • WEB
    • ASP
    • Node.js
    • PHP
    • Directadmin
    • Openssl
    • Regex
  • APP
    • Android
  • AI
    • Algorithm
    • Deep Learning
    • Machine Learning
  • IOT
    • Device
    • MSP430
  • DIY
    • Algorithm
    • Design Patterns
    • MATH
    • X98 AIR 3G
    • Tucao
    • fun
  • LIFE
    • 美食
    • 关于我
  • LINKS
  • ME
Claves
长风破浪会有时,直挂云帆济沧海
  1. 首页
  2. Platforms
  3. LINUX
  4. Mysql
  5. 正文

Mysql垂直拆分、水平拆分的拆分、查询总结-日常笔记

2016-04-26

一、垂直拆分

定义:对数据表“列”进行拆分,把一张列比较多的表拆分为多张表

分表原则:

  • 常用字段放在同一张表中
  • text等大字段独立拆分为一张表

查询方案:

  • 使用Join进行连接即可

二、水平拆分

定义:当表行数特别大(一般而言,指千万级以上)时,分成小表

分表原则:

  • 可按照对ID取模%N的方式(或hexdec(MD5(某字符串))%N),使ID分散到N个表中
  • 根据业务逻辑,可选择通过日期、地区等分表
  • 按照行数分表,如1~50,51~100(对查询没办法优化)

典型缺点:

  • group by或order by 会发生大灾难

查询方案:

  • 使用union和union all进行连接

分页查询方案:

select * from (
select * from [Member A]
union all 
select * from [Member B]) TmpTable limit 0,20
#此处 TmpTable是一个正常表

 

参考资料:

http://www.dewen.net.cn/q/17048/mysql+%E6%8C%89%E6%97%A5%E6%9C%9F%E6%B0%B4%E5%B9%B3%E5%88%86%E8%A1%A8%E4%B9%8B%E5%90%8E%E7%9A%84%E6%95%B0%E6%8D%AE%E6%9F%A5%E8%AF%A2%E6%96%B9%E5%BC%8F%E4%BB%A5%E5%8F%8A%E5%88%86%E9%A1%B5%E7%AD%96%E7%95%A5

http://www.cnblogs.com/zzwlovegfj/archive/2012/06/23/2559592.html

http://www.cnblogs.com/zhongyuan/p/4385747.html

标签: 暂无
最后更新:2016-04-27

代号山岳

知之为知之 不知为不知

点赞
< 上一篇
下一篇 >

COPYRIGHT © 2099 登峰造极境. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

蜀ICP备14031139号-5

川公网安备51012202000587号