SQLite запрос, подзапрос и улучшение производительности - PullRequest
0 голосов
/ 14 января 2012

В SQLite есть другой способ написать это утверждение:

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

и улучшить показатели?

Ответы [ 2 ]

1 голос
/ 14 января 2012

Другим вариантом может быть использование НЕ СУЩЕСТВУЕТ , но наибольшее улучшение производительности будет достигнуто при использовании соответствующих индексов.

Если его еще нет, вы можете попробовать добавить

  • индекс по 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)
1 голос
/ 14 января 2012

Рассмотрите возможность использования 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...