![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 89 Pomógł: 5 Dołączył: 23.10.2006 Skąd: Gda?sk Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Mam tabele fields o nastepujacej strukturze i okolo 2mln wierszy: id(int), document_id(int), name(varchar), value(text) index(document_id, name, id) W tabeli trzymane sa nazwy pol i ich wartosci z refem do dokumentu. Dokument ma tak jakby wersje, pole jest edytowane poprzez wstawienie wiersza o refie do tego samego dokumentu z ta sama nazwa. czyli jesli mam wiersz: 1 | 1 | imie | adrian i wstawiam 2 | 1 | imie | marek to znaczy ze wyedytowalem dokument '1' i zmienilem wartosc pola imie z adrian na marek. aktualne wartosci dla poszczegolnych pol jestem w stanie wyciagnac bardzo szybko dzieki indexowi (0.07 s):
ale kiedy chce przeszukac wyniki po value zapytaniem:
to wykonanie trwa juz okolo 15s. Ma ktos jakis pomysl?? bo mi sie juz wyczerpaly (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) pozdrawiam adrian Ten post edytował abusiek 8.12.2008, 23:49:43 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 89 Pomógł: 5 Dołączył: 23.10.2006 Skąd: Gda?sk Ostrzeżenie: (0%) ![]() ![]() |
distinct dla mysql jest wolniejszy niz group by.
Poza w podzapytaniu wybierajacym ostatnie wartosci dla kazdego pola, kazdego dokumentu, czyli
jest zastosowany tight scan, dzieki temu ze na tabeli zalozony jest index (documentId, name, id) i to zapytanie zwraca wyniki w 0.07s wiec watpie zeby dalo sie szybciej. Wg mnie problem tkwi w tym ze jesli majac juz teraz te ostatnie wersje kazdego chce sprawdzic czy sa wsrod nich takie z value like '%234%' musze jeszcze raz dolaczyc tabale i po niej szukac, czyli napisac cos takiego --> czas wykonania to 0.05s teraz z jednej strony mam zbior idikow pol w ostatniej wersji z drugiej zbior idikow pol ktore w value kiedys tam (moze obecnie) maja 123. Wyciagniecie czesci wspolnej tych dwoch zbiorow czyli fieldow ktore aktualnie maja w wartosci 123 zajmuje tyle czasu. Jak zagladam w logi mysql-a to okazuje sie ze jedna z tabel jest kopiowana na dysk jako tabela tymczasowa i to raczej trzeba optymalizowac tylko problem w tym ze juz nie mam pomyslu jak, bo probowalem chyba kazdej znanej mi skladni... Ten post edytował abusiek 9.12.2008, 12:28:00 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.08.2025 - 13:52 |