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

Вниз

Бред сивой кобылы........................   Найти похожие ветки 

 
Adventure   (2002-06-13 16:58) [0]

Я перелопатил свою базу из Paradox в InterBase! ( для тех кто еще помнит меня) <br>

ПАРНИ! Интербейзчики!!!!
TBase.Locate("SOME_FIELD",DATA,[loCaseInsensitive]) - 30 сек!!!! при индексированной базе по "SOME_FIELD"
<br>
TBase.Append - 25 мин!

У меня может с головой плохо?


 
koks   (2002-06-13 17:20) [1]

Переход на клиент-сервер требует переработки логики приложения (кроме переноса данных). Вместо Locate надо использовать SELECT WHERE, а вместо Append использовать INSERT INTO...VALUES.
Все эти громадные паузы из-за большого фетчинга (перекачки данных с сервера на клиента туда-сюда), которые используются если работать с базой "в лоб", как с Dbase/Paradox и ьтем более при использовании компонентов типа Table. Переходи на SQL - идеологию и на компоненты типа Query: Передаешь серверу запрос (SQL-строку) - получаешь от него данные(небольшую выборку) - обрабатываешь данные...

Но, это все общие рассуждения - может еще проблема в спец. установках... пусть подскажут лучшие спецы чем я.


 
kaif   (2002-06-13 17:23) [2]

Техника работы с сервеными базами иная. Никаких Append и Locate!
Вставка делается с помощью Insert. Лучше, чтобы это не была TTable или что-то подобное, а TQuery (или что-то подобное). Иначе, прежде чем сделать Append в большой таблице, TTable вытягивает все записи в себя (FetchAll). Locate вообще рыщет по набору, точно так же предварительно вытянутому в TTable при помощи Fetch. Поэтому вместо Locate c loCaseInsensitive люди используют SELECT FROM .. WHERE UPPER(...) = ...(опять TQuery!).
В общем, стиль Paradox не годится для IB.
Многое придется менять.


 
Adventure   (2002-06-13 17:31) [3]

Что-то у меня животик разболелся ........ :-(((((((((


 
koks   (2002-06-13 17:33) [4]

Тогда пивка...


 
Reindeer Moss Eater   (2002-06-13 17:34) [5]

К тому же Locate не использует индексы


 
Adventure   (2002-06-13 17:37) [6]

Сейчас пойду нажрусь пива, а завтра ВСЕ переделывать!
Народ, если что, буду за советом бегать..... к вам.

Удачи всем!


 
Fareader   (2002-06-13 18:05) [7]

Станет легче если перестанешь использовать TTable, а начнешь юзать TQuery


 
AlexA   (2002-06-14 00:51) [8]

>kaif © (13.06.02 17:23)

Вопросик не совсем в тему:

>Locate вообще рыщет по набору, точно так же предварительно >вытянутому в TTable при помощи Fetch

Если известно что данные не изменяются в справочнике, использовать Locate для IB это укладывается в логику SQL


 
Deniz   (2002-06-14 06:22) [9]

2Adventure ©
А что за компонент такой TBase? Чей он? И через что работает?


 
VAleksey   (2002-06-14 08:49) [10]

Мож спецовые компоненты для IB помогут ? Например TIBTable. Тогда и сильно логику приложения не надо будет менять.


 
MCFire   (2002-06-15 12:27) [11]

А я бы посоветовал использовать FibPlus компоненты особенно TFibDataSet клёвая вещь


 
kaif   (2002-06-15 13:53) [12]

> 2 AlexA © (14.06.02 00:51)
>Если известно что данные не изменяются в справочнике, >использовать Locate для IB это укладывается в логику SQL

Ничего не имею против. Для того Locate и существует. Если в справочнике не более 1000 записей и он редко меняется, может быть оправдано изредка вытягивать справочник на клиент и бегать по нему с помощью Locate.
Но так как у человека Locate занимает 30 сек, я и решил, что речь идет не о справочнике, а о какой-то очень большой таблице.
Кстати, ничто не мешает использовать Locate компонентов типа TQuery. Потому что кто-то мог бы подумать, что Locate есть только у TTable.
То есть TQuery позволяет сразу ограничить набор нужной выборкой, а потом можно перемещаться по нему с помощью Locate. Иногда это очень удобно, например, если нужно встать на ту же запись в наборе после того, как переоткрыл весь набор.


 
bander_log   (2002-06-19 10:28) [13]

Раньше тоже работал под DBase но выросли базы и перешел на SQL. Логика запросов меняется молностью. Кстати операции вставки удаления и обновления записи лучше (максимальная скорость и меньше трахаться с типом данных) через хранимые процедуры и компонент SP.


 
Turalyon   (2002-06-19 11:10) [14]

>> Reindeer Moss Eater (13.06.02 17:34)
Вырезка из Help-а по TIBCustomDataSet.Locate
[кусь]
Locate uses the fastest possible method to locate matching records. If the search fields in KeyFields are indexed and the index is compatible with the specified search options, Locate uses the index. Otherwise Locate creates a filter for the search.
[/кусь]
Так что Locate всеже использует индексы...

На счет FetchAll точно не уверен, но скорее всего да, он его делает...
А если такие траблы со временем происходят... тоскорее всего именно из за этого самого FetchAll по этому лучше делать как и советует народ, пользуйся компонентами с закладки InterBase и делай все через SQL запросы...



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

Форум: "Базы";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.011 c
3-47158
Abu
2002-06-18 17:35
2002.07.15
как определить вызвавший событие объект


1-47525
DNT
2002-07-04 12:58
2002.07.15
Как правильно уменьшить иконку?


3-47116
-Евгений-
2002-06-22 09:01
2002.07.15
Как при выборке данных из БД Oracle пронумеровать


1-47376
Explorer
2002-07-02 09:14
2002.07.15
FastReport: два DetailData


1-47469
Death for...
2002-07-02 15:32
2002.07.15
Чтение значения реестра...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский