MySQL - 哪个键更加优化

Nir*_*Nir 3 mysql optimization

假设我有一个由组中的产品组成的大型数据库.假设共有5组,每组有100,000个产品.产品ID是随机整数(组ID也是如此)

我需要找到特定组中的产品.我的问题是哪个主键更有效:

  1. (sid, pid)
  2. (pid, sid)

sid,pid是直观的,但是当按照这个顺序搜索时,MySQL必须从500,000行中隔离100,000,然后在100,000中找到一个数字.另一方面,(pid, sid)听起来对我来说更合理,因为它会强制mysql不在第一阶段创建大型100,000组,而是直接转到正确的项目(如果在不同的cids中有类似的pid,则最多5个项目) .

#2确实更快吗?

更新:好的.我把一张真正的桌子复制了两份.table0有主键sid,pid.table1有pid,sid.

查询结果:

解释select*from items0,其中sid = 22746和pid = 2109418034 1,'SIMPLE','items0','ref','PRIMARY','PRIMARY','8','const,const',14,''

解释select*from items1,其中sid = 22746和pid = 2109418034

1,'SIMPLE','items1','ref','PRIMARY','PRIMARY','8','const,const',11,''

还有另一个更新:我还将两个键添加到同一个表中并运行explain.得到这个:(主要以sid_pid1开头,Index2以pid1,sid开头)

1,'SIMPLE','items','ref','PRIMARY,index_2','index_2','8','const,const',13,''

我不确定,我可以从这个测试中得出什么结论?

Tom*_*ter 8

不要猜,测试.

复制数据库,尝试两个密钥,并自行查找.然后发布您的结果,并附上免责声明,用户应该使用他们的数据集自行尝试,但这是您的结果.

  • @balpha:虽然我赞同你的评论,但直觉通常可以提供一个很好的起点,所以说它不应该"基于"它是一个有点危言耸听,我想. (4认同)