|Subject||SV: [firebird-support] No index used for join on 'starting with'|
|Author||Svein Erling Tysvær|
>>This query uses natural for both tables, when I expected it to use anNot a good suggestion (my simplified understanding of how Firebird JOINs tables, may not be appropriate when STARTING WITH is part of the JOIN, so I've no clue how to force that index), but I can think of two possible solutions:
>>index for the join.
>>from table1 t1
>>join table2 t2 on t2.indexed_char14 starting with t1.indexed_char10
>>where t1.unindex_varchar containing 'foo'
>>This uses an index, so the optimizer knows about it.
>>from table2 t2
>>where t2.indexed_char14 starting with 'bar'
>>How can I get the optimizer to use the index for the join?
>Anyone? Without any indexes, I won't live to see this complete.
An expression index and
join table2 t2 on substring(t2.indexed_char14 from 1 for 10) = t1.indexed_char10
Add a calculated field
that you index and then change your JOIN to:
join table2 t2 on t2.indexed_char10 = t1.indexed_char10
Sorry for not having any better suggestions,