SQLite查询,子查询和性能改进

时间:2012-01-14 10:30:59

标签: performance sqlite

在SQLite中还有其他任何方式来编写此语句:

SELECT tape_id,title 
FROM tapes 
WHERE tape_id NOT IN (SELECT tape_id 
                      FROM tapeGenres)

并提高表现?

2 个答案:

答案 0 :(得分:1)

考虑使用LEFT JOIN

SELECT tapes.tape_id, tapes.title
FROM tapes
LEFT JOIN tapeGenres ON tapes.tape_id = tapeGenres.tape_id;
WHERE tapeGenres.tape_id IS NULL

答案 1 :(得分:1)

另一种选择可能是使用NOT EXISTS,但使用适当的索引可以获得最大的性能提升。

如果尚未存在,您可以尝试添加

  • tapeGenres.tape_id
  • 上的索引
  • tapes (tape_id, title)
  • 上的覆盖索引

SQL声明

SELECT tapes.tape_id, tapes.title
FROM   tapes t
WHERE  NOT EXISTS (SELECT tape_id FROM tapeGenres WHERE tape_id = t.tape_id)