Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 为什么选择如此之快?_Database_Optimization_Sqlite - Fatal编程技术网

Database 为什么选择如此之快?

Database 为什么选择如此之快?,database,optimization,sqlite,Database,Optimization,Sqlite,可能重复: 嗨 我有一个数据库,其中有一个名为“links”的表,在SQLite中有6亿行。数据库中有两列-一个“src”列和一个“dest”列。目前没有指数 src和dest之间有相当数量的公共值,但也有相当数量的重复行 我要做的第一件事是删除所有重复的行,然后对结果执行一些额外的处理,但是我遇到了一些奇怪的问题 首先,从src=434923和dest=5010182的链接中选择*。现在,这将相当快地返回一个结果,然后需要相当长的时间才能运行,因为我假设它正在对其余的6亿行执行tablesc

可能重复:

我有一个数据库,其中有一个名为“links”的表,在SQLite中有6亿行。数据库中有两列-一个“src”列和一个“dest”列。目前没有指数

src和dest之间有相当数量的公共值,但也有相当数量的重复行

我要做的第一件事是删除所有重复的行,然后对结果执行一些额外的处理,但是我遇到了一些奇怪的问题

首先,从src=434923和dest=5010182的链接中选择*。现在,这将相当快地返回一个结果,然后需要相当长的时间才能运行,因为我假设它正在对其余的6亿行执行tablescan

但是,如果我确实从链接中选择了DISTINCT*,那么它会立即开始非常快速地返回行。问题是:这怎么可能??当然,对于每一行,必须将该行与表中的所有其他行进行比较,但这需要表中剩余行的表扫描,应该需要花费时间


你知道为什么SELECT DISTINCT比标准SELECT快得多吗?

重复的问题需要重复的答案:


更准确地说,一个查询并不比另一个查询快。更准确地说,两个查询完成之前所用的时间应该相同。不同之处在于,使用DISTINCT的查询只需返回更多的行,因此它的响应速度似乎更快,因为您正在以较快的速度接收行。然而,在两者的引擎盖下发生的是相同的表格扫描。独特查询有一个数据结构,存储返回的内容并过滤重复项。因此,在查询完成之前实际上需要更长的时间,但是(返回的行)/时间更大,因为匹配的行更多。(另请注意:一些观众添加了一个查询结果限制,这可以使不同的查询看起来运行得更快(因为您达到了结果限制并停止了))。

为什么您又问了完全相同的问题,并且来自两个同名的不同帐户???老实说,我不知道。我之前试图发布这个问题,但是这里的服务器出现了一个错误。然后我试图找到原来的问题,但它没有在我的帐户下注册(现在仍然没有),并搜索了它(找不到),所以我认为它没有发布。为这个错误道歉。为重复的道歉,一个诚实的错误(请看我上面的评论)。谢谢你的帮助,非常感谢。