[MySQL] optymalizacja wyszukiwania

0

Cześć
W pracy dostałem kawałek kodu przeszukujący bazę i mam się zastanowić czy da się go jakoś zoptymalizować.

Są 2 tabele:

textinfo
id - int
occtime - int

field
textinfo_id - int
field - int
value - varchar

Użytkownik przy wyszukiwaniu może określić przedział czasowy(occtime) oraz określić wartości(value) parametrów(field);

Kawałek kodu, który dostałem wygląda mniej więcej tak:

AnsiString sql = AnsiString()
					+ "create temporary table t0 select id,occtime from textinfo"
					+ " where occtime>=" + conn->addSlashesQuote (curTime.toNumericAnsiString())
					+ " and occtime<=" + conn->addSlashesQuote (toTime.toNumericAnsiString());
				if (actuallimit > 0)
					sql = sql + " limit " + FINDLIMIT;
                                sql += ";";
				conn->executeUpdate (sql);

				sql = "select max(occtime) as occtime from t0";

				rs = conn->executeQuery (sql);
				if (rs->next())
					curTime.fromNumericAnsiString (rs->getString("occtime"));
				WDelete (rs);

				TextInfoFieldValues::const_iterator it;
				int i = 0;
				for (it=values.begin(), i=0; it != values.end(); it++, i++)
				{
					sql = AnsiString()
						+ "create temporary table t" + (i+1)
						+ " select id,occtime from t" + i + ",field"
						+ " where id=field.textinfo_id"
						+ " and field=" + it->first
						+ " and value like " + conn->addSlashesQuote(AnsiString ("%") + it->second + "%");
					conn->executeUpdate (sql);
					//conn->executeUpdate (AnsiString ("drop table t") + i);
				}
				rs = conn->executeQuery (AnsiString ()
					+ "select id from t" + i
					+ " order by occtime"
					); 

I teraz pewna istotna informacja. Baza stoi na MySQL 3.23.58. Chciałem wywalić wszystkie te tymczasowe tabele i powstawiać zapytania zagnieżdżone ale niestety wersja MySQL mi na to nie pozwala(zapytania zagnieżdżone dopiero od wersji 4.1). Macie jakiś inny pomysł na optymalne rozwiązanie tego wyszukiwania? Byłbym bardzo wdzięczny za jakiekolwiek pomysły.

0

Sory za wyrazenie ale masz przesrane :D wspolczuje Ci, trafiles na firme dinozaurow.... mysql 3.x.x :D, ten kod wyglada jakby pisal go taki sam dinozaur jak ten mysql :P.

Dam Ci jedna rade, jesli chcesz zwiekszyc szybkosc full textu znaczaco (my zyskalismy 11% wydajnosci calego serwera) zastosuj Sphinx'a www.sphinxsearch.com. Reszte olej i tak wazne bedzie ze zoptymalizowales znaczaco.

Pozdrawiam

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