Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]3581[/thread]

abfrage beschleunigen



<< >> 2 Einträge, 1 Seite
supersucker
 2005-06-06 18:44
#33329 #33329
User since
2005-03-17
118 Artikel
BenutzerIn
[default_avatar]
hi zusammen,

ich hab eine ca. 20 GB grosse postgresql-datenbank, die nur eine einzige tabelle mit 15 spalten enthält.

ich stelle nun über ein script immer folgende sql-abfrage:

Code: (dl )
1
2
3
4
5
6
7
'SELECT * FROM fragment     WHERE fragmentLength = ?
and secondaryStructure = ?
and (x between (? - 0.1) and (? + 0.1))
and (y between (? - 0.1) and (? + 0.1))
and (betaangledeg between (? - 1) and (? + 1))
and (gammaangledeg between (? - 1) and (? + 1)) &nb
sp;

fragmentlength ist ein int, secondarystructure ein string, der meistens gleich ist (z.B. LLLLL, oder LLLEEELLL), x,y,betaangledeg und gammaangledeg sind floats.

das problem ist nun das diese abfrage ewigkeiten dauert...
ich hab einen index auf fragmentlength gelegt sowie auf x und auf y, desweiteren hab ich die daten auf dem fragmentlength index geclustert, dennoch dauert die abfrage so lange, das das script eigentlich nicht benutzbar ist....

habt ihr noch eine idee wie man die abfrage beschleunigen kann?
wäre es sinnvoll auf alle attribute die ich oben abfrage einen index zu legen? secondarystructure beispielsweise ist meistens ein sehr ähnlich aussehender string, der string LLLLL beispielsweise wird mehrere millionen mal in der db vorkommen, deshalb dachte ich das es unsinn wäre da einen index draufzulegen da dann jeder schlüssel in der index tabelle auf mehrere millionen einträge verweist......oder hab ich da bei indizes was falsch verstanden?
gibt es noch andere möglichkeiten ausser indizes und clustering um abfragen zu beschleunigen?

danke im voraus...
pq
 2005-06-06 21:06
#33330 #33330
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
ich kenn mit mit postgres nicht aus, auf mysql würde ich mal ein EXPLAIN SELECT ...
ausführen.
mysql benutzt auch nur einen index pro statement/tabelle, ich kann mir nicht vorstellen,
das postgres das anders macht.
wie ist die kardinalität der indizes? (show indexes from fragment)\n\n

<!--EDIT|pq|1118077683-->
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< >> 2 Einträge, 1 Seite



View all threads created 2005-06-06 18:44.