SQL 优化
SQL optimizations
服务器是否 "per standard" (1) 在幕后使用写入时间与读取时间优化 (2)?例如,由于频繁记录 运行 查询?
运算次数的计算是否经得起经验丰富的计算机科学家的审查?
- 我知道 "standard" 是一个广泛的问题。
- 不知道有没有更好的名字呢
据我所知,没有任何数据库可以完全自动执行此操作。大多数查询比 select sum(T)
复杂得多,因此在一般情况下,弄清楚如何增量更新以前的结果是不切实际的,如果不是不可能的话(考虑 select hash(sum(T))
作为一个简单的例子)。即使可能,也不一定有帮助;根据您的应用程序,用插入性能换取 select 性能可能不符合您的最佳利益。
就是说,许多 RDBMS 以 materialised views (e.g. in Oracle with the fast-refresh option, or with an indexed view in SQL Server) 的形式提供了这种行为。只要视图的定义遵守严格的限制——你的select sum(T)
肯定符合条件——他们就会自动更新这个结果,并尽可能在其他查询中使用它。
在大多数其他 RDBMS(例如 Postgres)中也可以获得相同的结果,尽管用户需要付出一些额外的努力。通过在T
上创建触发器,可以自动更新Tsum
,直接查询。
服务器是否 "per standard" (1) 在幕后使用写入时间与读取时间优化 (2)?例如,由于频繁记录 运行 查询?
运算次数的计算是否经得起经验丰富的计算机科学家的审查?
- 我知道 "standard" 是一个广泛的问题。
- 不知道有没有更好的名字呢
据我所知,没有任何数据库可以完全自动执行此操作。大多数查询比 select sum(T)
复杂得多,因此在一般情况下,弄清楚如何增量更新以前的结果是不切实际的,如果不是不可能的话(考虑 select hash(sum(T))
作为一个简单的例子)。即使可能,也不一定有帮助;根据您的应用程序,用插入性能换取 select 性能可能不符合您的最佳利益。
就是说,许多 RDBMS 以 materialised views (e.g. in Oracle with the fast-refresh option, or with an indexed view in SQL Server) 的形式提供了这种行为。只要视图的定义遵守严格的限制——你的select sum(T)
肯定符合条件——他们就会自动更新这个结果,并尽可能在其他查询中使用它。
在大多数其他 RDBMS(例如 Postgres)中也可以获得相同的结果,尽管用户需要付出一些额外的努力。通过在T
上创建触发器,可以自动更新Tsum
,直接查询。