简单选择查询的曲线是什么?

时间:2014-04-14 15:13:26

标签: sql

这是一个概念性问题。

假设,当从table_name中选择*时,表中有100万条记录,大约需要3秒。

同样,当我选择1000万条记录时,所花费的时间约为30秒。但我被告知记录的选择与时间不成线性关系。在一定数量之后,选择记录所需的时间会呈指数增长吗?

请帮助我了解这是如何运作的?

2 个答案:

答案 0 :(得分:1)

这些东西可以使一个查询比其他查询花费更长的时间,即使是没有where子句或连接的简单选择。

首先,返回查询的时间取决于运行查询时网络的繁忙程度。它还可能取决于数据上是否存在锁定或可用内存量。

它还取决于表的宽度以及一般记录将具有多少字节。例如,我希望一个1000万个记录表只有两个列的两个整数将比一百万个包含一些大列的记录表快得多,特别是如果它们像存储为数据库对象或大字段的文件那样有太多的文本适合普通的varchar或nvarchar字段(在sql server中,这些将是nvarchar(max)或文本)。我期待这一点,因为即使有更多记录,也只有更少的总数据可以返回。

当你开始添加where子句和连接时,当然还有更多的东西会影响单个查询的性能。如果查询数据库,则应阅读有关特定数据库性能调优的好书。你可以做很多事情而不会意识到它会导致查询运行速度比需要的慢。您应该学习创建最有可能具有高效性的查询的技术。

答案 1 :(得分:1)

我认为每个数据库服务器都有所不同。在你发出查询时尝试监控性能(内存和CPU会发生什么?)

最终所有硬件组件都存在瓶颈。如果你接近这一点,服务器可能会窒息“#。