相关疑难解决方法(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万
查看次数

找到多列索引的最优顺序

所以假设我有一个包含两个索引的表 - 一个在列a上,另一个在列a,b和c上.

我注意到,根据索引定义中列的顺序,MySQL可能会使用单列索引而不是多列索引,即使多列索引中的所有三列都在ON中被引用加入的一部分.

这有点引出了一个问题......如何找出列的理想排序?你只需要暴力吗?

mysql sql indexing

2
推荐指数
1
解决办法
1268
查看次数

标签 统计

indexing ×2

mysql ×2

composite-index ×1

sql ×1