mysql 7列pk与1列md5唯一约束

标签 mysql indexing unique varchar

我有一个非常大的表,目前大约有 7000 万行并且每天都在增长数千行,这个架构现在每天都在翻倒,所以我要转向分区表并重新设计 ddl。

该表基本上是 NOT NULL INTEGERS 的集合(一些中等一些 INT 一些小) 这需要对一组 7 列(表中的列更多)有一个唯一约束,每次插入计算都非常昂贵,并且会进一步增加索引文件的大​​小,因为我从不通过它检索我更愿意放下它并以某种方式 md5/maybe simple concat 值...还不知道。

问题是唯一可以容纳如此大的唯一数字的列类型是 varchar 我想知道这个 PK 是否真的会更好? 另外因为我将有一个主键'part_key'(site_id,id)我将不得不 在分区设计中采取唯一约束,总结...... 我确定这不是一个新问题,但我找不到任何比较这两者的基准/文件,有没有人对这个问题有任何经验? 问题是 PK 是否应该是整个 8 个字段(请记住这个表可能有超过 100M 行)当我从来没有通过 pk 或只是唯一字段的散列值检索时 P.S:检索主要由 7 列中的两列完成 磁盘大小不是问题 谢谢。

最佳答案

在 mysql 进行分区修剪之前,我建议 (gulp) 将您的表非规范化为伪分区。做一些事情,比如对你的第一个值取模 32 并制作 32 个表格。

更新:显然 mysql 5.1.6 及更高版本支持修剪(http://dev.mysql.com/doc/refman/5.1/en/partitioning-pruning.html)所以我更强烈的建议是升级,然后允许 mysql 为您处理分区,可能使用哈希值您的 7 列之一。

关于mysql 7列pk与1列md5唯一约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1567814/

相关文章:

mysql - 使用 GROUP BY 和 ORDER BY 时,如何正确索引选择多个字段的查询?

sql-server - 是否有永远不会使用的主键列的原因?

unique - 在 Hive 中的特定列上不同

python - 从Python中的字典的多个键中获取特定值的唯一名称

PHP显示只要字段是唯一的

mysql - Slick:返回具有自动增量 ID 的插入行

python - 访问 Pandas 数据框时出现关键错误

php - 从php :timed out error中的特定ip连接AWS RDS(mysql)

php - MySQL - 多个查询

php - MySQL 选择两个日期之间的所有日期