标签: indexing

KEY关键字的含义是什么?

在这个MySQL表定义中:

CREATE TABLE groups (
  ug_main_grp_id smallint NOT NULL default '0',
  ug_uid smallint  default NULL,
  ug_grp_id smallint  default NULL,
  KEY (ug_main_grp_id)
);
Run Code Online (Sandbox Code Playgroud)

什么是KEY关键字是什么意思?它不是主键,它不是外键,它只是一个索引吗?如果是这样,这种类型的索引有KEY什么特别之处?

mysql indexing

133
推荐指数
2
解决办法
10万
查看次数

SQL Server索引 - 升序或降序,它有什么区别?

当您在MS SQL Server(我使用的是版本2005)中的列或列数上创建索引时,您可以指定每列上的索引是升序还是降序.我很难理解为什么这个选择就在这里.使用二进制排序技术,任何一种查找都不会那么快吗?它选择哪个订单有什么区别?

sql sql-server indexing optimization

132
推荐指数
3
解决办法
8万
查看次数

PostgreSQL可以索引数组列吗?

我在文档中找不到这个问题的明确答案.如果列是数组类型,是否会对所有输入的值进行单独索引?

我创建了一个包含一int[]列的简单表,并在其上放置了一个唯一索引.我注意到我无法添加相同的整数数组,这使我相信索引是数组项的组合,而不是每个项的索引.

INSERT INTO "Test"."Test" VALUES ('{10, 15, 20}');
INSERT INTO "Test"."Test" VALUES ('{10, 20, 30}');

SELECT * FROM "Test"."Test" WHERE 20 = ANY ("Column1");
Run Code Online (Sandbox Code Playgroud)

索引是否有助于此查询?

arrays postgresql indexing

132
推荐指数
3
解决办法
7万
查看次数

为什么PostgreSQL对索引列执行顺序扫描?

非常简单的例子 - 一个表,一个索引,一个查询:

CREATE TABLE book
(
  id bigserial NOT NULL,
  "year" integer,
  -- other columns...
);

CREATE INDEX book_year_idx ON book (year)

EXPLAIN
 SELECT *
   FROM book b
  WHERE b.year > 2009
Run Code Online (Sandbox Code Playgroud)

给我:

Seq Scan on book b  (cost=0.00..25663.80 rows=105425 width=622)
  Filter: (year > 2009)
Run Code Online (Sandbox Code Playgroud)

为什么它不执行索引扫描?我错过了什么?

postgresql indexing sequence database-scan

132
推荐指数
4
解决办法
5万
查看次数

聚簇索引和非聚簇索引之间的区别

我需要添加适当的index表格,需要一些帮助.

我很困惑,需要澄清几点:

  • 我应该为non-int列使用索引吗?为什么/为什么不呢

  • 我已经读了很多关于clusterednon-clustered指数但我仍然不能确定何时使用一个比其他.一个很好的例子可以帮助我和许多其他开发人员.

我知道我不应该为经常更新的列或表使用索引.我还应该注意什么呢?在进入测试阶段之前我怎么知道这一切都很好?

sql-server indexing database-design clustered-index non-clustered-index

126
推荐指数
4
解决办法
28万
查看次数

SQLite中的主键是否需要索引?

当一个整数列在SQLite表中被标记为主键时,是否应该为它显式创建索引?SQLite似乎不会自动为主键列创建索引,但考虑到其目的,它可能无论如何都要对其进行索引?(我会一直在搜索那个专栏).

对于字符串主键,情况会有所不同吗?

sqlite indexing primary-key

124
推荐指数
3
解决办法
3万
查看次数

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

  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和一张桌子B. 在主键上A有一个外键,.BBB_ID

由于某种原因(我知道有正当理由)当我在密钥上加入这两个表时它没有使用索引.

我是否需要单独创建索引A.B_ID或者是否存在外键提供的索引?

sql oracle indexing

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

Rails:添加列后添加索引

假设我table在Rails应用程序中创建了一个表.一段时间后,我添加一个列运行:

rails generate migration AddUser_idColumnToTable user_id:string. 
Run Code Online (Sandbox Code Playgroud)

然后我意识到我需要添加user_id为索引.我知道这个add_index方法,但是这个方法应该在哪里调用?我应该运行迁移(如果是,哪一个?),然后手动添加此方法?

migration indexing ruby-on-rails

112
推荐指数
4
解决办法
9万
查看次数

在mysql中索引datetime字段是个好主意吗?

我正在设计一个大型数据库.在我的应用程序中,我将有很多行,例如我目前有一个表有400万条记录.我的大多数查询都使用datetime子句来选择数据.在mysql数据库中索引datetime字段是一个好主意吗?

Select field1, field2,.....,field15
from table where field 20 between now() and now + 30 days 
Run Code Online (Sandbox Code Playgroud)

我试图让我的数据库运行良好,查询运行顺利

更多,您认为我应该创建一个高效数据库的想法是什么?

mysql indexing

111
推荐指数
3
解决办法
10万
查看次数