SELECT
sum(CheckFinal.SUM) AS SUME,
strftime('%Y - %m', CheckDate) AS CheckDate
FROM
CheckFinal
WHERE CheckFinal.NUMER IN (
SELECT
CheckDetail.NUMER
FROM
CheckDetail
WHERE
CheckDetail.NUMER IN (
SELECT
PriceList.UniqID AS PriceListUniqID,
PriceList.Name AS PriceListName,
Category.UniqID
FROM
PriceList Join Category on PriceList.CATEGORY = Category.UniqID
WHERE (Category.UniqID = 2)
)
)
GROUP BY strftime('%Y %m', CheckDate);
У меня есть такой запрос, чтобы объединить данные из таблиц 4: - Категория (100 записей) - PriceList (20'000 записей) - CheckDetail (10'000 '000 записей) - CheckFinal (2'000'000 записей)SQL WHERE IN ... ВСТУПИТЬ стол
Ярким словом, я ищу элементы PriceList, которые отмечены как дети Category.UniqID # 2, тогда я хотел бы собрать все CheckDetail.NUMER, чтобы определить все значения продаж с помощью таких элементов PriceList. Кроме того, я ищу поссобимость для сбора всех файлов CheckFinal.NUMER.
Проблемы у меня есть:
- Это невозможно сделать ВЫБЕРИТЕ процедуру три (3) время вложенного (SQLite.3), я думаю, что это время, чтобы сделать JOIN и, но у меня нет опыта в присоединении
- CheckDetail огромный набор данных, это займет 2 секунды, чтобы найти только один пункт PriceList через 10 миллионов записей и у меня есть 3'000 детали в моем запросе
WHERE (Category.UniqID = 2)
в моем случае, я должен LookUp 3'000 раз через 5'000'000 записей, но у меня есть 10 наборов и th e запрос потратит около 10 часов, чтобы успеть.
JOIN оптимизирует время запроса? Как сделать такой JOIN QUERY?
Есть ли какие-либо инструменты GUI для создания запроса с помощью конструктора или что-то в этом роде?
UPD:
http://sqlfiddle.com/#!5/50a93/2 (используйте SQL.js для вставки нескольких строк данных)
Если вы предоставляете sqlFiddle МОГУ попробуйте. –
Я бы предположил, что вы ни в коем случае не должны запрашивать какую-либо базу данных с полным пониманием объединений. И ни при каких обстоятельствах вы не используете графический интерфейс для присоединения, вам нужно понять это, это просто. – HLGEM
Оптимизация производительности невозможна, если вы храните секретную схему базы данных. –