![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Будьте добры , подскажите пожалуйста: [D5, IB6.x]
Sveta © (2003-10-06 09:42:00)
Каким образом лучше реализовать поиск по большой базе IB6 через FIB + , заранее благодарна.
Sergey13 (2003-10-07 09:18:00) [1]
А по моему тут думать пока особо не над чем . В своем вопросе ты не сказала о своей задаче практически ничего нужного для решения.
>Каким образом лучше реализовать поиск по большой базе IB6 через FIB +
"лучше реализовать" - это очень субъективно. Главное правильно, т.е. что бы находилось ВСЕ что есть и соответствует критериям.
" поиск " - что за поиск? Одно дело отобрать записи по форинкею, и совсем другое найти частичное соответствие в БЛОБах.
"по большой базе IB6" - большая это скока точно в байтах. И что за база - статический набор данных типа телефонного справочника, или постоянно обновляемые таблицы?
" через FIB + " - это, как справедливо заметил Sergey_Masloff (06.10.03 09:58) [1] тут вообще ни при чем.
Sveta (2003-10-06 14:35:00) [2]
от души благодарю за внимание, есть над чем подумать!
Johnmen (2003-10-06 12:14:00) [3]
>GreatMaster © (06.10.03 11:36)
Хотелось бы узнать, при каких условиях первый запрос быстрее второго ?
И вообще, они неэквивалентны, о чем и сказал Danilka © (06.10.03 11:44).
Sergey_Masloff (2003-10-06 11:58:00) [4]
GreatMaster © (06.10.03 11:36) [2]
Какое отношение приведенный тобой пример имеет к работе с параметрами и (боже упаси) фильтрами. В любом случае на сервер передается текст запроса а назад на клиента - результат. И какие при этом компоненты используются не так важно. Работа с параметрами по сравнению с временем обработки запроса в 99.99999% занимает пренебоежимо малый промежуток времени. Или ты часто встречал запрос в котором штук 100 параметров а результат - 1 запись с выборкой по индексу? ;-)
То что ты описал с выискиванием наибыстрейшего варианта - это просто неявная попытка планирования запроса. Кстати переписывать текст запроса зачастую не нужно - просто прописать план (в InterBase) или расставить хинты (Oracle).
Danilka (2003-10-06 11:44:00) [5]
[2] GreatMaster © (06.10.03 11:36)
кстати, это будет не то-же самое.
вернут одинаковые данные (в орокле) такие запросы:
SELECT Table1.N, (SELECT NAME FROM Table2 WHERE Table2.N=Table1.N)
FROM Table1
и
SELECT Table1.N, Table2.Name
FROM Table1, Table2
WHERE Table1.N=Table2.N(+)
иначе, строки у которых поле Table1.N is null или посто не совпадает с Table2.N не попадут в набор.
:))
Danilka (2003-10-06 11:40:00) [6]
[2] GreatMaster © (06.10.03 11:36)
>SELECT Table1.N, (SELECT NAME FROM Table2 WHERE Table2.N=Table1.N)
>FROM Table1
А разве в ИБ такой запрос отработает?
И причем здесь средство доступа, запрос выполняет сервер.
GreatMaster (2003-10-06 11:36:00) [7]
> А чем поиск по большой базе через FIB+ отличается от поиска по такой же базе через, например, IBX
Тем что там могут немного отличаться св-ва/методы при работе с фильтром и запросами с параметрами. Ну фильтр ваще использовать нельзя, а вот запросы можно попереписывать, выискивая наибыстрейший вариант (предварительно проиндексировав базу, конечно), так например, при прочих равных условиях запрос
SELCT Table1.N, (SELECT NAME FROM Table2 WHERE Table2.N=Table1.N)
FROM Table1
может работать значительно быстрее чем тоже но
SELECT Table1.N, Table2.Name
FROM Table1, Table2
WHERE Table1.N=Table2.N
и всё такое...
Sergey_Masloff (2003-10-06 09:58:00) [8]
Хороший вопрос. А чем поиск по большой базе через FIB+ отличается от поиска по такой же базе через, например, IBX? Лично я (из применимых на практике)методов знаю только использование SELECT. Если база большая и выборки не очень быстро идут то почитайте про индексы и планы запросов, в том числе и про явное указание планов запроса.