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):
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:
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

pozdrawiam
adrian