开发者社区> 问答> 正文

mysql分区问题后的效率问题,数据库报错

"

这几天,闲着没事,搞搞mysql分区,操作步骤如下:

表A:数据大小1500W左右。

ID----主键

playerID----做索引

partition by hash(ID) partitions 256

把表A按照ID做hash分区,分256个区。

未分区前:

select * from A where playerID=56;执行时间是0.0002秒

分区后:

select * from A where playerID=56;执行时间居然两秒多。

结论:难道分区后,playerID的索引无效了?

" ![image.png](https://ucc.alicdn.com/pic/developer-ecology/5a6c6c8ee98745da9e3829f95e3386f2.png)

展开
收起
python小菜菜 2020-06-01 10:20:03 617 0
1 条回答
写回答
取消 提交回答
  • "必须的,你按id分区,必须按id查询才快,要不然查询比原来慢n倍######表分区后,必须按分区字段查询才提升速度,否则比原来更慢了######

    限制太大了,像表A这种结构,很常见的,而且分区的字段必须包括主键,还不如不分区。

    可能某些结构的超大的表才有用处。例如那些log数据表,按照日期查询的,把日期分区,才有效果。

    ######按经常用到的查询字段进行分区才能提高性能,你为什么要分区,可以通过设置单表分多个数据文件存储来提高性能。######

    上面的例子是按经常用到的查询字段进行分区。那个ID和PlayerID是经常需要查询的。因为ID是主键,不能按照playerID来分区(分区必须包括主键的),那好吧,我按照ID来分区,但是结果是,按照PlayerID查询,变慢了。

    可以通过设置单表分多个数据文件存储来提高性能。这个有用?貌似这个功能是分区才有的,普通的表不能这样子吧

    ######你这样做的话,当然会更慢了,这个查询需要在256个分区中进行查询才能得到结果" ![image.png](https://ucc.alicdn.com/pic/developer-ecology/406fd4ac29d4429db281005fc18a9fcf.png)
    2020-06-01 10:24:34
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
DTCC 2022大会集锦《云原生一站式数据库技术与实践》 立即下载
阿里云瑶池数据库精要2022版 立即下载
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载

相关镜像