Subject | RE: RE: [firebird-support] Firebird 1.5 Order by Query |
---|---|
Author | |
Post date | 2013-11-22T12:16:22Z |
Yes, thanks, that's made the performance between the two queries comparable again.
---In firebird-support@yahoogroups.com, <svein.erling.tysvaer@...> wrote:>I have a simple query:Probably the PLAN is different, I assume you have an index on ITEM_DATE and Firebird wrongly believes it would could speed up the query by using it (it doesn't know that only three rows will be returned, I guess ITEM_ID isn't a very selective field). Change your query to:
>
>SELECT first 1 ITEM_DATE FROM HISTORY
>WHERE ITEM_ID = 'ITEM_ID_123456'
>and ITEM_TYPE = 'TYPE1'
>AND ITEM_STATUS > 200 and ITEM_STATUS <> 310
>ORDER BY ITEM_DATE ASC
>
>Which runs in about 1.5 seconds. If I remove the Order by it's less than 100ms. There are only three records in the result set.
>There is an ascending index on ITEM_DATE and the statistics are up to date.
>
>Does anyone know why there would be such a difference in performance when using\not using the order by? What is the
>engine ordering? It can't be the three records to take 1.5 seconds, surely?
SELECT first 1 ITEM_DATE+0 FROM HISTORY
WHERE ITEM_ID = 'ITEM_ID_123456'
and ITEM_TYPE = 'TYPE1'
AND ITEM_STATUS > 200 and ITEM_STATUS <> 310
ORDER BY 1 ASC
and the speed should be closer to 100ms again.
HTH,
Set