Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2008.05.25;
Скачать: [xml.tar.bz2];

Вниз

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

 
Дядя Вова   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
2-1209046114
Артемка
2008-04-24 18:08
2008.05.25
treeview


15-1207988786
vrem_
2008-04-12 12:26
2008.05.25
Опять атакует!!


11-1189583530
robt
2007-09-12 11:52
2008.05.25
Где ошибка ?


15-1207999338
No_Dead
2008-04-12 15:22
2008.05.25
Немного о windows


10-1146664383
delphi
2006-05-03 17:53
2008.05.25
COM(delphi) + DLL(C++)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский