常见数据库 SQL 特性比较之索引和约束

原文链接: https://www.sql-workbench.eu/dbms_comparison.html

更新日期:2019-10-10。

上一篇中,列出了 11 种常见数据库对于查询语句的支持情况。接下来我们继续介绍这些数据库产品对于索引和约束的特性比较。

索引 Oracle PostgreSQL SQL Server IBM Db2 MySQL MariaDB Firebird H2 HSQLDB Derby SQLite
部分索引 Y1 Y Y2 N N N N N N N Y
降序索引 Y Y Y Y Y N Y3 Y Y N Y
函数索引 Y Y N4 Y Y N4 Y5 N N N Y
使用自定义函数创建函数索引 Y Y N Y N Y N N N N N6
索引包含额外的列 N Y Y Y N N N N N N N
基于多列的统计信息 Y Y Y Y N N N N N N N
聚集索引 Y7 N Y Y Y Y N N N N Y
唯一索引中允许多个 NULL 值 N8 Y N N Y9 Y9 N Y Y N Y
约束 Oracle PostgreSQL SQL Server IBM Db2 MySQL MariaDB Firebird H2 HSQLDB Derby SQLite
延迟约束 Y Y N N N N N N N Y Y
检查约束 Y Y Y Y Y Y Y Y Y Y Y
基于子查询的检查约束 N N N N N N Y N N N N
基于自定义函数的检查约束 N Y Y Y N N Y N N N N6
排除约束 N Y N Y N N N N N N N
语句级别的约束评估 Y Y Y Y N N N Y Y Y Y
外键约束支持 ON DELETE CASCADE Y Y Y Y Y Y Y Y Y Y Y
外键约束支持 ON UPDATE CASCADE N Y Y N Y Y Y Y Y N Y

  1. 通过函数索引实现。 ↩︎

  2. 索引的 WHERE 条件中不支持使用函数。 ↩︎

  3. 多列索引不支持混合使用 ASC 和 DESC。 ↩︎

  4. 可以基于计算列创建索引来实现类似功能。 ↩︎ ↩︎

  5. 只能使用单列表达式,不能与其他列组合索引。 ↩︎

  6. 使用 C 实现的函数可以用于索引和约束。 ↩︎ ↩︎

  7. Oracle 中称为索引组织表(Index-Organized Table)。 ↩︎

  8. 单列索引允许,多列索引不允许。 ↩︎

  9. 取决于存储引擎,InnoDB 和 MyISAM 都支持。 ↩︎ ↩︎

猜你喜欢

转载自blog.csdn.net/horses/article/details/102548684