Subject | Slow query in Firebird/Interbase |
---|---|
Author | bortoswatkins |
Post date | 2004-01-22T21:42:26Z |
If I have a table in firebird, and a table in microsoft SQL server
2000. Identical table setup( I actually used DTS to import the table
into SQL server).
In MS SQL server I can run a query and return all rows in 6 seconds.
Using firebird(I have tried 1.03 and 1.5, as well as interbase 7.1)
it takes 23 seconds.
I have typed the query and
This query computes a running total for all records.
If I run the index tuning wizard in MS SQL server, it puts a clusted
index on Company_id. Then the query returns all rows in 4 seconds.
I have an index on the same field in Firebird.
I have ran the query from within my Delphi app, and in ibconsole,
ibexpert, and even from Easysoft ODBC. Same results.
What am I missing?????
Thanks,
select A.*, ( SELECT SUM(DEPOSIT_AMT - CHK_AMT) FROM LEDGER B
where ((b.effective_date < a.effective_date) or ((b.effective_date =
a.effective_date) and (b.entered_date < a.entered_date)) or
((b.effective_date = a.effective_date) and
(b.entered_date = a.entered_date) and (b.id <= a.id))) AND
B.COMPANY_ID = 54 AND B.LEDGER_TYPE = 2)
Balance from LEDGER A WHERE A.COMPANY_ID = 54
AND A.LEDGER_TYPE = 2
ORDER BY EFFECTIVE_DATE, ENTERED_DATE, ID
2000. Identical table setup( I actually used DTS to import the table
into SQL server).
In MS SQL server I can run a query and return all rows in 6 seconds.
Using firebird(I have tried 1.03 and 1.5, as well as interbase 7.1)
it takes 23 seconds.
I have typed the query and
This query computes a running total for all records.
If I run the index tuning wizard in MS SQL server, it puts a clusted
index on Company_id. Then the query returns all rows in 4 seconds.
I have an index on the same field in Firebird.
I have ran the query from within my Delphi app, and in ibconsole,
ibexpert, and even from Easysoft ODBC. Same results.
What am I missing?????
Thanks,
select A.*, ( SELECT SUM(DEPOSIT_AMT - CHK_AMT) FROM LEDGER B
where ((b.effective_date < a.effective_date) or ((b.effective_date =
a.effective_date) and (b.entered_date < a.entered_date)) or
((b.effective_date = a.effective_date) and
(b.entered_date = a.entered_date) and (b.id <= a.id))) AND
B.COMPANY_ID = 54 AND B.LEDGER_TYPE = 2)
Balance from LEDGER A WHERE A.COMPANY_ID = 54
AND A.LEDGER_TYPE = 2
ORDER BY EFFECTIVE_DATE, ENTERED_DATE, ID