Какой запрос более эффективен? - PullRequest
1 голос
/ 03 февраля 2012

В настоящее время у меня есть две таблицы с именами 'names' и 'account'.Мне нужно выбрать все имена, где включена учетная запись.Таким образом, я могу сделать это одним из двух способов, но мне интересно, что будет быстрее и наиболее эффективно?

Первый способ - выбрать все включенные учетные записи, затем в отдельном запросе есть предложение where с этимиaccount (псевдокод):

    SELECT account_id FROM accounts WHERE enabled=1;

затем

    SELECT * FROM names WHERE account_id IN (account_id_list);

ИЛИ Я могу сделать простое объединение таблиц:

    SELECT * FROM names JOIN accounts USING account_id WHERE enabled=1;

Таблица имен будет примерно10-25 тыс. Строк, а также будут работать на мобильном устройстве (Android) с использованием SQLite.

Спасибо!

Ответы [ 3 ]

1 голос
/ 03 февраля 2012

вложенные выборки НАМНОГО лучше, чем объединения, поэтому просто объедините первые два запроса в один:

SELECT * FROM names WHERE account_id IN (
SELECT account_id FROM accounts WHERE enabled=1);
0 голосов
/ 03 февраля 2012

SELECT * FROM names WHERE EXISTS (SELECT 1 FROM accounts WHERE account_id = names.account_id AND enabled=1);

0 голосов
/ 03 февраля 2012

Учитывая, что запрос довольно прост, и большая часть работы, которую движок SQL должен выполнить в первом случае, - это просто форматирование / передача данных в вашу программу, чтобы сразу отправить их обратно и снова проанализировать, вторая версия должна быть немного более эффективной (и сохранить вашу программу тоже немного работы)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...