Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.05.25;
Скачать: CL | DM;

Вниз

Правильно отфильтровать поля   Найти похожие ветки 

 
Дядя Вова   (2007-12-19 11:50) [0]

Здравствуйте.
Такой вопрос:
 Есть две таблицы связанные через массу промежуточных. Необходимо поля первой отфильтровать через поля второй.
Правильно ли я понимаю, что ЕДИНСТВЕННЫЙ метод это сделать запрос через внутреннее объединение всех таблиц и применить WHERE?
Т.е.
 SELECT * FROM (((table1 INNER JOIN table5 ON ...)) INNER JOIN table6 ON ...) INNER JOIN table2 ON ...) WHERE table2.id > 5;

Насколько медленно будет работать такой запрос при 1000 записях в каждой таблице?


 
Sergey13 ©   (2007-12-19 11:57) [1]

> [0] Дядя Вова   (19.12.07 11:50)
> Насколько медленно будет работать такой запрос при 1000
> записях в каждой таблице?

Это зависит от запроса и структуры таблиц/индексов


 
Jeer ©   (2007-12-19 12:04) [2]


> Есть две таблицы связанные через массу промежуточных.


Скорее всего проблема в дизайне БД.


 
Дядя Вова   (2007-12-19 12:06) [3]


> Это зависит от запроса и структуры таблиц/индексов

Запрос выписан, связь FK = PK.
Хотелось бы узнать какое правильное решение в подобных ситуациях.


 
sniknik ©   (2007-12-19 12:30) [4]

> что ЕДИНСТВЕННЫЙ метод
ну почему? можно еще через подзапросы (при малых количествах выбираемых записей возможно будет даже выигрыш в скорости)

> Насколько медленно будет работать такой запрос при 1000 записях в каждой таблице?
проверь, и узнаешь...

> Хотелось бы узнать какое правильное решение в подобных ситуациях.
нормальное решение... раз уж работает и удовлетворяет. если нет, то пробуй варианты, вплоть до перепланировки структуры базы. (может немного денормализовать не помешает...)


 
Sergey13 ©   (2007-12-19 13:27) [5]

> [3] Дядя Вова   (19.12.07 12:06)
> Запрос выписан,
Запрос не накладная - его не выпишешь. 8-)

>связь FK = PK.
Это еще ни о чем не говорит. Если PK=индекс, то FK<>индекс.


 
Дядя Вова   (2007-12-19 13:52) [6]

В целом ответ получил, спасибо.
Последнее,  если кто сталкивался будет ли время такого запроса измеряться в секундах, если около 1000 записей в каждой таблице?
БД Access


 
Kolan ©   (2007-12-19 13:53) [7]

> если кто сталкивался будет ли время такого запроса измеряться
> в секундах, если около 1000 записей в каждой таблице?
> БД Access

Куда проще проверить&#133


 
Sergey13 ©   (2007-12-19 13:56) [8]

> [6] Дядя Вова   (19.12.07 13:52)
> будет ли время такого запроса измеряться в секундах

Ну не в литрах же. Естественно в секундах. Или в сутках - то-же можно. 8-)


 
Desdechado ©   (2007-12-19 13:59) [9]

SELECT * при большом количестве полей и соединении многих таблиц  может дать нехилый по времени фетч.


 
sniknik ©   (2007-12-19 14:11) [10]

> Последнее,  если кто сталкивался будет ли время такого запроса измеряться в секундах, если около 1000 записей в каждой таблице?
> БД Access
практика критерий истины!...
и вообще, недостаточно инфы чтобы сказать хотя бы примерно... (а даже если бы было достаточно, то кто будет воспроизводить твою ситуацию, писать записи (по 1000), и т.д. проверять только чтобы тебе это передать? сам с успехом справишься... или в дворники.)

для примера сталкивался с идиотской на первый вгляд ситуацией (и вроде бы с базой аксесс) когда одно и тоже по сути условие в разных вариантах давало время выполнения на порядки различающиеся,  типа минута vs секунда... а условие связей (и инфа по полям в них) у тебя даже не показано, типа как несущественное...
кому интересно условие было такое
... WHERE isTrueInBoolField
тормозило, а переписанное так
... WHERE isTrueInBoolField=true
"летало".


 
Дядя Вова   (2007-12-19 15:50) [11]


> SELECT * при большом количестве полей и соединении многих
> таблиц  может дать нехилый по времени фетч.

Т.е. SELECT table2.field1 FROM .....
в разы сократит время выполнения?


 
sniknik ©   (2007-12-19 15:59) [12]

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



Страницы: 1 вся ветка

Текущий архив: 2008.05.25;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.018 c
3-1197928124
tempovik
2007-12-18 00:48
2008.05.25
Как получить значение и индекс из сетки DBGrid?


2-1209399997
AlexDan
2008-04-28 20:26
2008.05.25
Иконка на форме


2-1209614254
San1712
2008-05-01 07:57
2008.05.25
Почему не присваивается свойствам Caption и Strings текст ?


2-1209742904
dest81
2008-05-02 19:41
2008.05.25
FireBird


15-1207731098
brother
2008-04-09 12:51
2008.05.25
Помогите определить кодировку ну или что там написано...