Hi,

> With this enhancement I'm trying to solve one of my own performance
issues.

Sure, it sounds good to me. The "fail query" is a different feature, the
links were just FYI.

> It is possible that no index in the list is chosen, in which case a full
table scan will be used.

It looks like this is what MySQL is doing, so that's fine.

Regards,
Thomas


On Thu, Jan 5, 2017 at 9:48 AM, Steve McLeod <[email protected]> wrote:

> MySQL syntax seems to be the popular option. I'll use that.
>
> Proposed Solution
> ==============
>
> I'll add this to the H2 SQL syntax:
>
> SELECT [TOP term] [DISTINCT | ALL] selectExpression FROM tableExpression
> [USE INDEX (indexList)] ...
>
> where indexList is defined as :
> indexName [, indexName]*
>
> Each index in the list must exist, otherwise an INDEX_NOT_FOUND_1 (error
> code 42112) exception is thrown.
>
> Only indexes in the list will be used when choosing an index to use on the
> given tableExpression. There is no significance to order in this list.
>
> It is possible that no index in the list is chosen, in which case a full
> table scan will be used.
>
> To test this, I'll add test cases that check that the result of EXPLAIN
> ANALYZE indicates that a specified index is used (or is not used).
>
> > A related feature is to fail queries if no index is available.
>
> This sounds like a great idea, but I won't do this as part of this change.
> With this enhancement I'm trying to solve one of my own performance issues.
>
> Any feedback on this proposed solution?
>
>
>
> On Wednesday, 4 January 2017 13:13:15 UTC+1, Steve McLeod wrote:
>>
>> I'm considering attempting to add index hints to H2.
>>
>> Questions:
>> * Is this a good idea? Or is it  better to work on making the query
>> optimizer smarter at choosing the correct index?
>> * Is Oracle's syntax preferable? Or MySQL's syntax? Or is there a better
>> syntax altogether?
>>
>> Oracle:
>> SELECT /*+ INDEX (employees emp_department_ix)*/
>>        employee_id, department_id
>>   FROM employees
>>   WHERE department_id > 50;
>>
>> MySQL:
>> SELECT * FROM table1 USE INDEX (col1_index,col2_index)
>>   WHERE col1=1 AND col2=2 AND col3=3;
>>
>>
>> --
> You received this message because you are subscribed to the Google Groups
> "H2 Database" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at https://groups.google.com/group/h2-database.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.

Reply via email to