求问有较大数据的数据库设计问题 求教一个数据表的设计问题,比如说,有一个人口与工作单位对应的关系表,比如说一张表里面有人员id,公司id等。人口大概有几亿,一个人的话可能会有好几份工作,这张表会有几十亿的数据。这张表该怎样设计才能使查询效率比较快啊? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 您好: 对于分区表是不是有这样一个问题,如果按人员id分区的话,他要是进行以公司为条件查询的话还是得全部遍历啊?如果按公司id分区的话,当他以某个人员为条件查询的话是不是也得全部遍历啊?我不知道考虑的对不对。您能帮我说下么? 建议分表人员表人员ID ....公司表:公司ID 人员ID ...两表通过人员ID连接记录过多,可以考虑分区表人员表按人员ID分区、公司表按公司ID分区 这段时间测试了infinidb,感觉比自己分表和分区要好很多1.如果分表(纵向),当查询跨越了多个表的时候,必然要用union all拼接SQL,导致查询麻烦2.如果分区,要在创建表的时候根据考虑如何纵向分区,当你的数据有几十亿条的时候,分区只能在1024个限制内,这种限制十分麻烦,而且如果不做索引,在跨越多个分区查询的时候效率并不高。3.使用infinidb不用分区和创建索引,我测试5000万条数据使用聚合函数查询的时间明显快过MyISAM,甚至只用不到20%的时间。所以建议你试试,而且导入数据infinidb提供的cpimport是相当快的,当然,如果你用了load data,那么性能是绝对不能接受的。 mysql千万级别的数据库优化 mysql安装问题请高手解答 MySqlDump脚本还原后备注信息丢失 100分求教ocbc问题 如何显示数据库中多少表格? 请教下面两个sql的差别 mysql导入数据库的错误类型#1064 菜的不能再菜的问题 我在使用MySQL的API接口编程时,为什么在对表执行操作时可以锁表而不能解开以锁的表 如何把图片路径存入到mysql mysqlcluster的访问节点 外键名字是干嘛的呀?
对于分区表是不是有这样一个问题,如果按人员id分区的话,他要是进行以公司为条件查询的话还是得全部遍历啊?如果按公司id分区的话,当他以某个人员为条件查询的话是不是也得全部遍历啊?我不知道考虑的对不对。您能帮我说下么?
人员表
人员ID ....公司表:
公司ID 人员ID ...两表通过人员ID连接记录过多,可以考虑分区表
人员表按人员ID分区、公司表按公司ID分区
1.如果分表(纵向),当查询跨越了多个表的时候,必然要用union all拼接SQL,导致查询麻烦
2.如果分区,要在创建表的时候根据考虑如何纵向分区,当你的数据有几十亿条的时候,分区只能在1024个限制内,这种限制十分麻烦,而且如果不做索引,在跨越多个分区查询的时候效率并不高。
3.使用infinidb不用分区和创建索引,我测试5000万条数据使用聚合函数查询的时间明显快过MyISAM,甚至只用不到20%的时间。
所以建议你试试,而且导入数据infinidb提供的cpimport是相当快的,当然,如果你用了load data,那么性能是绝对不能接受的。