有没有理由不为我的每个数据库表创建一个索引来提高性能?似乎一定有某种原因,否则所有表都会自动默认有一个.

我使用MS SQL Server 2016.

推荐答案

一张表上有一个索引没什么大不了的.您会自动对作为主键或声明为唯一的列(或列的组合)创建索引.

索引有一些开销.索引本身会占用磁盘和内存上的空间(使用时).因此,如果空间或内存有问题,那么索引过多可能是问题.当插入/更新/删除数据时,索引和原始数据一样需要维护.这会减慢更新并锁定表(或表的一部分),这可能会影响查询处理.

每个表上的少量索引是合理的.在设计这些查询时,应考虑典型的查询负载.如果索引每个表中的每一列,那么数据修改的速度就会减慢.如果您的数据是静态的,那么这不是问题.然而,使用索引耗尽所有内存可能是一个问题.

Database相关问答推荐

MongoDB 中的 OVER PARTITION 类似功能

如何将初始数据放入数据库

将光标中找到的值输出到logcat?

Android Room持久性库@Update不起作用

查询最后一天、上周、上个月SQLite

如何在 Windows 中安装 InfluxDB?

一个 5MB 的 SQL 数据库可以存储多少数据?

在 PostgreSQL 中使用 pg_notify(text, text) 监听/通知

B+ 树相对于 BST 的优势?

JavaScript 布尔搜索查询生成器接口库?

此平台不支持 LocalDB

在 MySQL 存储过程中使用if和else

显示包含特定表的所有数据库名称

在 Firestore 中使用嵌套的单个查询

如果表不存在,如何使用 Derby Db 创建表

一个表可以有两个外键吗?

ORM 还是Vietnam of Computer Science吗?

如何在 Google AppEngine 上实现自动增量

复式记账的关系数据模型

Web 应用程序的文件存储:文件系统、数据库和 NoSQL 引擎