Delphi & MySql

0

Witam.

Łącze się za pomocą dbexpress ze zdalną bazą MySql. Muszę zrobić "update" pola typu LONGTEXT.
Próbowałem korzystać z sqlTabel ale to bardzo mało wydajne rozwiązanie bo ściąga całą tabelę na komputer.
Tabela ok 4000 wierszy, waży ok 20 MB.
Więc przesiadłem się na sqlQuery ale tu pojawił się problem ze zbudowaniem zapytania. Ponieważ ładuję do tego LONGTEXTa dość długi kod html.
Macie jakiś pomysł na wydajne rozwiązanie, lub też jak sformatować html żeby sqlQuery go łyknęło.

Pozdrawiam

0

nie bardzo rozumiem co masz nie tak z sqlQuery ??
ale jeżeli chodzi ci o to że np taki znak
'
ci rozwala sql lub podobne to trzeba go zamienić na
\'

ale nie wiem o co ci dokładnie nie łyka, może opisz to bardziej lub daj jakiś przykład i kod którym to robisz...

0

Trzeba ograniczyć liczbę zwracanych wierszy albo w części WHERE albo inaczej. Ja na przykład robię dodatkowe pole ZMIENIONY które informuje czy rekord był obrabiany. SELECT * from tabela rows 1 to 10 where ZMIENIONY = 'nie' (interbase). Następnie otwieram ten kursor z 10 rekordami i robię potrzebne zmiany jednocześnie zaznaczając pole ZMIENIONY=tak' i dalej w pętli powtarzam tworzenie kursora z 10 rekordami (może być tu 100) aż nie zwróci żadnych rekordów. Wtedy robię update całej tabeli i ustawiam ZMIENIONY='nie'

0

use parameters luck

0

Witam

Myślę że problem stanowią znaki" ' :, a także długość kodu podstawianego do zapytanie ok 5000 znaków.
Spróbuję poprzedzić wszystkie wyżej wymienione znaki \

Aktualizować muszę wszystkie wiersza tabeli, więc czas aktualizacji będzie niezależny do tego czy robię to po 10 wierszy czy też wszystkie na raz.

Dzięki za pomoc

0
toshhi napisał(a)

Aktualizować muszę wszystkie wiersza tabeli, więc czas aktualizacji będzie niezależny do tego czy robię to po 10 wierszy czy też wszystkie na raz.

Dzięki za pomoc

Jednak zrobiłbym test czasu wykonania z podziałem aktualizacji po 100 rekordów zamiast otwierać kursor na całej tabeli. Jest zasada żeby nie otwierać kursora na dużych tabelach więc to jakoś przeszkadza. Na pewno zajmuje to zasoby i być może też wpływa jakoś na spowolnienie, szczególnie jeśli wykonujemy sortowanie (nawet jeśli są indeksy). Rozumiem że nie robisz aktualizacji ręcznie, bo to się mija z celem wyświetlania olbrzymiej tabeli dla użytkownika, jednak i tak warto podzielić aktualizację po 100 rekordów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1