什么是Big-O SQL选择?

前端之家收集整理的这篇文章主要介绍了什么是Big-O SQL选择?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
什么是Big-O for sql select,对于n行的表,我想要返回哪个结果?

什么是Big-O更新,删除或创建操作?

我在说MysqLsqlite一般.

解决方法

由于您不控制所选择的算法,因此无法直接知道.但是,没有索引,SE​​LECT应该是O(n)(表扫描必须检查每个记录,这意味着它将按照表的大小进行缩放).

使用索引,SE​​LECT可能是O(log(n))(尽管它将取决于用于索引的算法和数据本身的属性,如果对于任何真实的表都适用).要确定您的任何表或查询的结果,您必须诉诸于分析现实世界的数据.

没有索引的INSERT应该非常快(接近O(1)),而UPDATE需要首先查找记录,因此会比您在那里的SELECT更慢(稍微).

当索引树需要重新平衡,更接近O(log(n))时,具有索引的INSERT可能再次位于O(log(n ^ 2))的ballpark中.如果UPDATE影响到索引行,则在SELECT成本之上也会发生相同的减速.

所有投注都是关闭的,一旦你在谈论JOIN的组合:你将不得不配置和使用您的数据库查询估计工具来阅读它.还要注意,如果这个查询性能关键的,那么您应该随时重新生成文件,因为查询优化器使用的算法会随数据负载的变化而改变.

另一件要记住的事情是,大O不会告诉你每笔交易的固定成本.对于较小的表,这些可能高于实际工作成本.作为一个例子:单个行的跨网络查询的设置,拆除和通信成本一定会超过在小表中查找索引记录.

正因为如此,我发现能够在一个批次中捆绑一组相关的查询可能会比对数据库所做的任何优化都对性能有更大的影响.

猜你在找的MsSQL相关文章