一张表有 userid(不唯一)、uuid(唯一),但经常要查表格存储userid的数据,那么,主键顺序是userid+uuid,还是uuid+userid?
如果经常要查询表格存储中 userid 的数据,那么最佳的主键顺序是 userid+uuid。
原因:
示例:
假设有一张表名为 users
,其中包含以下列:
如果主键顺序为 userid+uuid
,则将数据存储在分区中的方式如下:
分区 1:
- userid: user1
- uuid: uuid1
- uuid2
- userid: user2
- uuid3
分区 2:
- userid: user3
- uuid4
- uuid5
- userid: user4
- uuid6
要获取所有具有 userid
为 user1
的记录,只需执行范围查询:
SELECT * FROM users WHERE userid = 'user1'
此查询将只扫描分区 1,从而提高查询效率。
注意事项:
uuid+userid
,则范围查询将扫描所有分区,这可能会降低查询效率。userid+uuid,因为uuid是唯一的,可以保证查询的准确性,而userid不是唯一的,可能会查询到多条数据。
主键userid+uuid,可以命中userid。当然你也可以单独把userid设为索引。希望对您有帮助。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。