RE: [firebird-support] index use when using order by

2019-09-18 Thread 'Andrew Zenz' and...@aimsoftware.com.au [firebird-support]
Thanks everyone, I have added a descending index to the tables required,
it makes a big difference.

 

Andrew Zenz

 

 



From: firebird-support@yahoogroups.com
[mailto:firebird-support@yahoogroups.com] 
Sent: Wednesday, 18 September 2019 4:04 PM
To: firebird-support@yahoogroups.com
Subject: Re: [firebird-support] index use when using order by

 

  

On 2019-09-18 06:46, liviuslivius liviusliv...@poczta.onet.pl 
[firebird-support] wrote:
> Hi
> 
> your problem is that you have ascending index, which is not usable in
> descending queries. You need to create descending index and it then
> can be used in e.g. max queries. Ascending index is used in min
> queries and order by xx asc.

This is in my opinion an annoying limitation of Firebird. The indexes 
are theoretically bidirectional, but aren't used that way because of how

index pages are written. The write strategy makes it possible for a 
reverse read to miss index pages when the index is modified (page split)

while it is read. I think there must be a strategy that can be used to 
address that.

In other database an 'ascending' index can also be used for descending 
reads, there ascending and descending are applied to individual columns 
to create different key orderings in the index.

Mark





Re: [firebird-support] index use when using order by

2019-09-18 Thread Mark Rotteveel m...@lawinegevaar.nl [firebird-support]
On 2019-09-18 06:46, liviuslivius liviusliv...@poczta.onet.pl 
[firebird-support] wrote:
> Hi
> 
> your problem is that you have ascending index, which is not usable in
> descending queries. You need to create descending index and it then
> can be used in e.g. max queries. Ascending index is used in min
> queries and order by xx asc.

This is in my opinion an annoying limitation of Firebird. The indexes 
are theoretically bidirectional, but aren't used that way because of how 
index pages are written. The write strategy makes it possible for a 
reverse read to miss index pages when the index is modified (page split) 
while it is read. I think there must be a strategy that can be used to 
address that.

In other database an 'ascending' index can also be used for descending 
reads, there ascending and descending are applied to individual columns 
to create different key orderings in the index.

Mark