![]() |
1
2
在现实中,你只能通过在你调整,然后再调整,一次又一次的测量之前测量性能来发现这一点。 但是,根据您的查询,您应该考虑(或者至少首先尝试)这样的非聚集索引:
推理:
所有这些都准备好了,你 应该 大多数情况下,索引会在新的非聚集索引上查找,以满足您的查询。但是,还有很多其他的因素也在起作用,你可能没有在你的问题中提到,甚至可能没有考虑到你自己-但这种方法应该给你一个良好的起点不亚于。 |
![]() |
2
0
您没有提到是否需要在查询中使用发布日期或ID作为筛选条件,因此最好在非按时间顺序的列上使用聚集索引(我假设当前聚集索引是pk)。对吗?). 我将在相册的ID上创建一个聚集索引。 如果您不能更改聚集索引,或者有许多其他查询可以从现有聚集索引中受益,那么我支持@marc_的答案(并将进行相应的投票)。 |
![]() |
3
0
我建议在
|
![]() |
4
0
ID上的主键。将其设置为非群集。我想这不会被用得太多(特别是如果所有的查找都是通过专辑或海报)。 albumid上的聚集索引。似乎在大多数查询中都会用到。 发布者的非聚集索引。对于聚集索引albumid,它将出现在该索引的叶级,因此其作用非常类似于包含列。根据使用情况,最好将其作为聚集索引…但是作为一个varchar(20),它会占用更多的磁盘空间,并且性能会比albumid差(假设albumid是int)。 不能作为索引中的列发布,因为不能对位列进行索引。您也不想这样做——因为在100M+行中只有两个可能的值,所以SQL可能永远不会使用它来优化查询。 我建议规范化已发布的\u by(将其移动到自己的表中,给它自己的代理键,并将其用作此表中的外键)。这将显著减少主表中的存储空间,提高总体性能,并允许您根据需要将聚集索引翻转到该列。(同样,如果“bob”贴到桌子上,然后“bob”也贴到镇上,您如何区分bob和bob?) |
![]() |
Community wiki · SQL语法新手 1 年前 |
|
KateMak · 是否将多行中的多列与唯一id组合? 1 年前 |
![]() |
Karuna · SQL中列内的筛选器[重复] 1 年前 |
![]() |
Irvan Affandy · 为另一个选择选择声明的键 1 年前 |
![]() |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
![]() |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |