Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> mysql, wolno dzialajace zapytanie
abusiek
post
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):

  1. SELECT max(d.id), d.document_id, d.name, d2.value FROM documents d, documents d2 WHERE d.id = d2.id GROUP BY d.documentId, d.name


ale kiedy chce przeszukac wyniki po value zapytaniem:

  1. SELECT STRAIGHT_JOIN <span style ='color:blue'>max(d.id), d.documentId, d.name, d2.value FROM documents d, documents d2 WHERE d2.name = 'first_name' AND d2.value = 'Adrian' AND d.id = d2.id GROUP BY documentId, name


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
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 22:55