【发布时间】:2021-11-20 07:42:45
【问题描述】:
假设我想运行这个查询
select *
from table
where column_1 = 12
我知道二分查找的工作原理,也许如果我在column_1 上创建索引,dbms 将使用二分查找。
这里的问题:创建索引后如何在这种情况下使用不同的算法,是否适用?
【问题讨论】:
-
通常优化器会尝试为一条 SQL 语句生成最优的执行计划。你为什么要改变它?
-
有时,我只是想使用二分搜索,不想创建更多索引,顺便说一句,约束和索引会减慢插入速度,因为检查和维护它们的成本不是免费的
-
系统中是否有索引会导致性能下降,或者这是一种过早优化的尝试?如果索引维护或整体查询性能存在实际问题,您最好询问该问题而不是一般问题。您说,您了解二进制搜索,其中还包括使用二进制搜索的要求。现在的问题是,您是否在任何地方都拥有无需索引的二进制搜索的数据结构?
-
不,我之前在插入时遇到了问题(花费了更多时间),当时我们在表上创建了一些约束和索引,所以我们在加载之前和之后删除这些索引。
-
这是数据仓库中的一种常用方法,只要您不处理实时数据,它就可以正常工作。如果它正在工作并满足需求,请不要触摸它。还要注意,约束还有助于数据库引擎做出决定(例如,当存在并强制执行外键时,引擎知道某些连接将以非常可预测的方式工作并且可以采取捷径),检查约束可以帮助解决在哪里某些场景中的条件等。当然,在 CRUD 操作期间维护这些需要资源
标签: sql database algorithm data-structures