powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Join & Where: курица или?
9 сообщений из 9, страница 1 из 1
Join & Where: курица или?
    #32378330
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Люди!
Теоретический вопрос: что будет работать быстрее (и что правильнее)
- сначала два запроса по разным таблицам с условиями Where
- затем из их результатов Join
или
- сразу Join со всеми Where в одном запросе?

мысль в том
что не происходит ли во втором случае Join по всем данным
вместо первичного налажения условий?!..
...
Рейтинг: 0 / 0
Join & Where: курица или?
    #32378351
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А попробовать самому и засечь время?
...
Рейтинг: 0 / 0
Join & Where: курица или?
    #32378400
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
д.б. по барабану, но можно проверить планы вариантов запросов
И лучше не время засекать, а использовать ISAM статистику (DBEngine.ISAMStats). У Гетца есть хороший пример (а если в него добавить и таймер...)
...
Рейтинг: 0 / 0
Join & Where: курица или?
    #32378796
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
была надежда, что это общеизвестный вопрос...

хорошо
а такая мысль:
что быстрее
- выдавать отчету источник данных в виде запроса с ключевыми полями (ID)
(и пусть отчет сам через запросы в полях со списком подставляет текст по полученным ID - а быстро ли это?)
или
-сразу в запросе выдать отчету текст и не мучать отчет (группировать по тексту будет медленнее)?
...
Рейтинг: 0 / 0
Join & Where: курица или?
    #32378812
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>(и пусть отчет сам через запросы в полях со списком подставляет текст по полученным ID - а быстро ли это?)

1000 записей - 1000 мелких запросов, плюс по 1000 мелких запросов при печати и переходе по страницам.
Фиговая мысль у тебя возникла, а вот если бы возникла мысль результат работы запроса слить во временную таблицу и использовать эту врем. таблицу в качестве источника записей отчета - то да - это была бы мысля!
...
Рейтинг: 0 / 0
Join & Where: курица или?
    #32378887
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
м-да
многоуважаемый Олл присутствует в единственном числе....
неужель людЯм нечего сказать?
хоть КТО КАК РАБОТАЕТ?!..
Кто нибудь поля со списком в отчетах вообще втыкает?
или это бред сивушной кобылы что я так делаю?

2 SV
Спасибо за ответы!
ваабче-то была два варианта:
или отчет заставлять полями со списком пользоваться (ты его отвергаешь)
или подсунуть ему сразу текст - и он будет группировать текст неиндексированный
(это точно быстрее?)

ты предлагаешь второй вариант слитый в таблицу
понимаю
и для отчетов на десятках тысяч и более записей поддерживаю
а для мелких зачем?
...
Рейтинг: 0 / 0
Join & Where: курица или?
    #32378921
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А каков смысл полей со списком в отчетах?
...
Рейтинг: 0 / 0
Join & Where: курица или?
    #32379027
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имхо.
Все зависит от условий постановки задачи и условий в которых работает программа.

Есть две критичные точки:
время формирования отчета и сетевой траффик.
Желательно уменьшить и то и другое, но возможны варианты, когда одно уменьшается, а другое увеличивается и наоборот.

Для ADP+SQL:
берем Profiler и какую-нибудь программку измерения сетевого траффика.
Я при подобных тестированиях использовал T-Meter (точное название не помню).

Запросы ловим через Profiler смотрим планы выполнения.
Траффик считаем с помощью программы.
Сравниваем результаты различных вариантов и реализуем тот, который больше подходит.
...
Рейтинг: 0 / 0
Join & Where: курица или?
    #32403107
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот что говорят про группировку и джойн:

Microsoft Knowledge Base Article - 112112

If a totals query includes a join, try grouping the records in one query and adding this query to a separate query that
will perform the join. This improves performance in some queries. For example, instead of the following query

SELECT Customers.[Company Name], Customers.[Contact Name],
Max(Orders.[Order Date]) AS [MaxOfOrder Date]
FROM Customers INNER JOIN Orders ON Customers.[Customer ID] =
Orders.[Customer ID]
GROUP BY Customers.[Company Name], Customers.[Contact Name];



break the query into two separate queries, as follows:

Q1: SELECT Orders.[Customer ID], Max(Orders.[Order Date]) AS
[MaxOfOrder Date]
FROM Orders
GROUP BY Orders.[Customer ID];

Q2: SELECT Customers.[Company Name], Customers.[Contact Name],
Q1.[MaxOfOrder Date]
FROM Q1 INNER JOIN Customers
ON Q1.[Customer ID] = Customers.[Customer ID];



Note that Microsoft Access usually "collapses" queries where possible. Other than situations specifically noted in this
article, it should not make any difference whether you have a query based on another query, or create one query.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Join & Where: курица или?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]