在Sqlite中,哪个select更快?
a是表索引,b是普通列在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
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)