相关疑难解决方法(0)

我什么时候应该使用复合索引?

  1. 我应该何时在数据库中使用复合索引?
  2. 使用复合索引的性能分支是什么?
  3. 我为什么要使用复合索引?

例如,我有一张homes桌子:

CREATE TABLE IF NOT EXISTS `homes` (
  `home_id` int(10) unsigned NOT NULL auto_increment,
  `sqft` smallint(5) unsigned NOT NULL,
  `year_built` smallint(5) unsigned NOT NULL,
  `geolat` decimal(10,6) default NULL,
  `geolng` decimal(10,6) default NULL,
  PRIMARY KEY  (`home_id`),
  KEY `geolat` (`geolat`),
  KEY `geolng` (`geolng`),
) ENGINE=InnoDB  ;
Run Code Online (Sandbox Code Playgroud)

是否有意义,我使用的复合指数都geolatgeolng,这样的:

我替换:

  KEY `geolat` (`geolat`),
  KEY `geolng` (`geolng`),
Run Code Online (Sandbox Code Playgroud)

有:

KEY `geolat_geolng` (`geolat`, `geolng`)
Run Code Online (Sandbox Code Playgroud)

如果是这样:

  • 为什么?
  • 使用复合索引的性能分支是什么?

更新:

由于很多人都声明它完全依赖于我执行的查询,因此下面是最常见的查询:

SELECT * FROM homes
WHERE geolat BETWEEN ??? AND …
Run Code Online (Sandbox Code Playgroud)

mysql indexing composite-index

122
推荐指数
6
解决办法
6万
查看次数

我应该联合索引ActiveRecord多态关联吗?

我有一个我希望非常大的度量表.它具有多态关联,因此它可以属于想要记录某些度量的其他模型.我通常索引像这样的关联列来加速关联加载. 我听说有人谈论联合索引这种关联.这看起来像:

add_index :comments, [:commentable_type, :commentable_id]

但我也听到了反对创建低基数指数的建议,因为索引的收益并没有抵消维持它的开销.由于我的多态关联的_type一半可能在数百万行中只有4-5个值,所以我倾向于只对多态关联的_id部分进行索引.我可能会使用_id列和一些其他未提及的整数和日期时间列创建一些额外的联合索引,但我也不会在这些索引中包含_type.

这是你会做什么/推荐?

migration indexing activerecord ruby-on-rails polymorphic-associations

10
推荐指数
1
解决办法
1623
查看次数