Thread: Slow performance with no apparent reason
I am in the process of adding PostgreSQL support for an application, in addition to Oracle and MS SQL.
I am using PostgreSQL version 7.3.2, Red Hat 9.0 on Intel Pentium III board.
I have a query that generally looks like this:
SELECT t1.col1, t2.col1 FROM t1, t2 WHERE t1.x=t2.y AND t2.p='string' AND t2.q=1
This query is strikingly slow (about 100 sec when both t1 and t2 has about 1,200 records, compare with less than 4 sec with MS SQL and Oracle)
The strange thing is that if I remove one of the last 2 conditions (doesn't matter which one), I get the same performance like with the other databases.
Since in this particular case both conditions ( t2.p='string', t2.q=1) are not required, I can't understand why having both turns the query so slow.
A query on table t2 alone is fast with or without the 2 conditions.
I tired several alternatives, this one works pretty well:
SELECT t1.col1, t2.col1 FROM t1, t2 WHERE t1.x=t2.y AND
EXISTS (
SELECT * FROM t2 t2a WHERE t2a.p='string' AND t2a.q=1 AND t2a.y=t2.y )
Since the first query is simpler than the second, it seems to me like a bug.
Please advise
Yonatan
I am using PostgreSQL version 7.3.2, Red Hat 9.0 on Intel Pentium III board.
I have a query that generally looks like this:
SELECT t1.col1, t2.col1 FROM t1, t2 WHERE t1.x=t2.y AND t2.p='string' AND t2.q=1
This query is strikingly slow (about 100 sec when both t1 and t2 has about 1,200 records, compare with less than 4 sec with MS SQL and Oracle)
The strange thing is that if I remove one of the last 2 conditions (doesn't matter which one), I get the same performance like with the other databases.
Since in this particular case both conditions ( t2.p='string', t2.q=1) are not required, I can't understand why having both turns the query so slow.
A query on table t2 alone is fast with or without the 2 conditions.
I tired several alternatives, this one works pretty well:
SELECT t1.col1, t2.col1 FROM t1, t2 WHERE t1.x=t2.y AND
EXISTS (
SELECT * FROM t2 t2a WHERE t2a.p='string' AND t2a.q=1 AND t2a.y=t2.y )
Since the first query is simpler than the second, it seems to me like a bug.
Please advise
Yonatan
Yonatan Goraly kirjutas P, 26.10.2003 kell 00:25: > I am in the process of adding PostgreSQL support for an application, > in addition to Oracle and MS SQL. > I am using PostgreSQL version 7.3.2, Red Hat 9.0 on Intel Pentium III > board. > > I have a query that generally looks like this: > > SELECT t1.col1, t2.col1 FROM t1, t2 WHERE t1.x=t2.y AND t2.p='string' > AND t2.q=1 > > This query is strikingly slow (about 100 sec when both t1 and t2 has > about 1,200 records, compare with less than 4 sec with MS SQL and > Oracle) always send results of EXPLAIN ANALYZE if you ask for help on [PERFORM] knowing which indexes you have would also help. and you should have run ANALYZE too. ----------------- Hannu
I run ANALYZE and the problem resolved Thanks >Yonatan Goraly kirjutas P, 26.10.2003 kell 00:25: > > >>I am in the process of adding PostgreSQL support for an application, >>in addition to Oracle and MS SQL. >>I am using PostgreSQL version 7.3.2, Red Hat 9.0 on Intel Pentium III >>board. >> >>I have a query that generally looks like this: >> >>SELECT t1.col1, t2.col1 FROM t1, t2 WHERE t1.x=t2.y AND t2.p='string' >>AND t2.q=1 >> >>This query is strikingly slow (about 100 sec when both t1 and t2 has >>about 1,200 records, compare with less than 4 sec with MS SQL and >>Oracle) >> >> > >always send results of EXPLAIN ANALYZE if you ask for help on [PERFORM] > >knowing which indexes you have would also help. > >and you should have run ANALYZE too. > >----------------- >Hannu > > > >