Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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
使用索引在SQLite中进行缓慢查询,还有什么更好的方法?_Sql_Database_Performance_Sqlite - Fatal编程技术网

使用索引在SQLite中进行缓慢查询,还有什么更好的方法?

使用索引在SQLite中进行缓慢查询,还有什么更好的方法?,sql,database,performance,sqlite,Sql,Database,Performance,Sqlite,我想在一个大表(10000000行/40列)上进行分析。因此,我将表加载到SQLite中以查询它。我有一个类似的问题 SELECT x, y FROM table WHERE x in (10,20,30) 现在我注意到SQLite的速度非常慢,因为我只在x上有一个索引。我猜这是由于硬盘访问在文件的不同位置之间跳跃。覆盖索引(x,y)可以解决这个问题,但我不想为我所做的每种查询类型创建覆盖索引 所以我的问题是:我能把SQLite调整得更快吗?或者,哪个数据库可能比我的解决方案更快(其他SQL数

我想在一个大表(10000000行/40列)上进行分析。因此,我将表加载到SQLite中以查询它。我有一个类似的问题

SELECT x, y FROM table WHERE x in (10,20,30)
现在我注意到SQLite的速度非常慢,因为我只在
x
上有一个索引。我猜这是由于硬盘访问在文件的不同位置之间跳跃。覆盖索引
(x,y)
可以解决这个问题,但我不想为我所做的每种查询类型创建覆盖索引

所以我的问题是:我能把SQLite调整得更快吗?或者,哪个数据库可能比我的解决方案更快(其他SQL数据库是否更快)


PS:查询如此缓慢的实际原因是什么?

您查询返回多少条记录?这里有两个参考资料需要考虑:和。查询返回相当大一部分行。这取决于分析,但可能高达10%。我已经试过吸尘器等,但在网上找不到其他东西。只有在第一次执行时,它的速度非常慢-所以很可能是与硬盘驱动器相关的东西?在
(x,y)
对上创建索引在这里没有意义。您不按这些列进行搜索,只按
x
进行搜索。索引与您从查询返回的内容无关。@Googie:噢,它使速度差至少达到1000倍。使用双索引,引擎根本不必读取行,只读取索引。对于单个索引,它会在索引和行数据之间不断跳转。