Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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中,哪个select更快?_Sql_Sqlite - Fatal编程技术网

在Sqlite中,哪个select更快?

在Sqlite中,哪个select更快?,sql,sqlite,Sql,Sqlite,a是表索引,b是普通列 select a,b from ( select a,b from table where a in (*listA*) ) where b in (*listB*) 或 我使用伪代码来表示列表声明。第一个查询是错误的,因为它从不查看a和b的组合 要使用临时表,您必须加入它: SELECT a, b FROM MyTable JOIN (SELECT 1 AS a, 2 AS b UNION ALL SELECT 3, 4 UNION A

a是表索引,b是普通列

select a,b from ( select a,b from table where a in (*listA*) ) where b in (*listB*)


我使用伪代码来表示列表声明。

第一个查询是错误的,因为它从不查看a和b的组合

要使用临时表,您必须加入它:

SELECT a, b
FROM MyTable
JOIN (SELECT 1 AS a, 2 AS b UNION ALL
      SELECT 3,      4      UNION ALL
      SELECT 5,      6 ...)
USING (a, b)

哪个版本优化得更好取决于太多的因素;找到答案的唯一方法是使用具有代表性的数据进行测量。

这些查询可能会给出不同的结果。你想得到正确的结果,不是吗?是的,我想我可能写错了,我的意思是让他们给出相同的结果。我的意思是第二个在最后选择a和b,基本上,对于第一个,我试图模仿第二个的行为,但只使用索引比较创建一个选择的临时表,然后使用非索引列比较从临时表中选择
SELECT a, b
FROM MyTable
JOIN (SELECT 1 AS a, 2 AS b UNION ALL
      SELECT 3,      4      UNION ALL
      SELECT 5,      6 ...)
USING (a, b)