MySQL数据库分区
我有一个巨大的表名称、日期、来源、详细信息、视图
。 名称、日期、来源、详细信息
一起作为 PK。 source
原本是 ENUM 类型。
现在我计划对表进行分区。我计划将source
更改为sourceid (INT)
和PARTITION BY LIST (sourceid)
。我在另一张小桌子上测试过。
我的问题是,我是否需要一些添加过程(例如修剪)以使后面的 SELECT 命令更快?并且简单的 SELECT * FROM tb WHERE sourceid = 1 命令会更快吗(仅查找正确的分区而不是整个表)?
I have a huge table name, date, source, detail, views
. name, date, source, detail
are together as PK. source
is originally ENUM type.
Now I plan to partition the table. I plan to change the source
to sourceid (INT)
, and PARTITION BY LIST (sourceid)
. I have tested on another small table.
My question is, do I need some addition process (e.g., prune) to make the later SELECT
command faster? AND will simple SELECT * FROM tb WHERE sourceid = 1
command be faster (only lookup the right partition instead of the whole table)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用分区不会神奇地使 SELECT 更快。
MySQL会分析WHERE子句来决定从哪些分区读取吗?是的。
这会比在
sourceid
上建立索引更快吗?如果不了解更多关于您的数据库的信息,就不可能说。Using partitions won't magically make SELECTs faster.
Will MySQL analyze the WHERE clause to decide which partitions to read from? Yes.
Will this be faster than having an index on
sourceid
? Impossible to say without knowing more about your database.