When a query selects on field_a and field_b, that index can be used.  If
querying on field_a alone, the index again is useful.  Query on field_b
alone however, that first index is of no use to you.

On Fri, Oct 7, 2011 at 10:49 AM, Brandon Phelps <bphe...@gls.com> wrote:

> This thread has sparked my interest. What is the difference between an
> index on (field_a, field_b) and an index on (field_b, field_a)?
>
>
> On 10/06/2011 07:43 PM, Nuno Tavares wrote:
>
>> Neil, whenever you see multiple fields you'd like to index, you should
>> consider, at least:
>>
>> * The frequency of each query;
>> * The occurrences of the same field in multiple queries;
>> * The cardinality of each field;
>>
>> There is a tool "Index Analyzer" that may give you some hints, and I
>> think it's maatkit that has a tool to run a "query log" to find good
>> candidates - I've seen it somewhere, I believe....
>>
>> Just remember that idx_a(field_a,field_b) is not the same, and is not
>> considered for use, the same way as idx_b(field_b,field_a).
>>
>> -NT
>>
>>
>> Em 07-10-2011 00:22, Michael Dykman escreveu:
>>
>>> Only one index at a time can be used per query, so neither strategy is
>>> optimal.  You need at look at the queries you intend to run against the
>>> system and construct indexes which support them.
>>>
>>>  - md
>>>
>>> On Thu, Oct 6, 2011 at 2:35 PM, Neil Tompkins
>>> <neil.tompk...@googlemail.com>**wrote:
>>>
>>>  Maybe that was a bad example.  If the query was name = 'Red' what index
>>>> should I create ?
>>>>
>>>> Should I create a index of all columns used in each query or have a
>>>> index
>>>> on individual column ?
>>>>
>>>>
>>>> On 6 Oct 2011, at 17:28, Michael Dykman<mdyk...@gmail.com>  wrote:
>>>>
>>>> For the first query, the obvious index on score will give you optimal
>>>> results.
>>>>
>>>> The second query is founded on this phrase: "Like '%Red%' " and no index
>>>> will help you there.  This is an anti-pattern, I am afraid.  The only
>>>> way
>>>> your database can satisfy that expression is to test each and every
>>>> record
>>>> in the that database (the test itself being expensive as infix finding
>>>> is
>>>> iterative).  Perhaps you should consider this approach instead:
>>>>  <http://dev.mysql.com/doc/**refman/5.5/en/fulltext-**
>>>> natural-language.html<http://dev.mysql.com/doc/refman/5.5/en/fulltext-natural-language.html>
>>>> >
>>>> http://dev.mysql.com/doc/**refman/5.5/en/fulltext-**
>>>> natural-language.html<http://dev.mysql.com/doc/refman/5.5/en/fulltext-natural-language.html>
>>>>
>>>> On Thu, Oct 6, 2011 at 10:59 AM, Tompkins Neil<<neil.tompkins@**
>>>> googlemail.com <neil.tompk...@googlemail.com>>
>>>> neil.tompk...@googlemail.com>  wrote:
>>>>
>>>>  Hi,
>>>>>
>>>>> Can anyone help and offer some advice with regards MySQL indexes.
>>>>>  Basically
>>>>> we have a number of different tables all of which have the obviously
>>>>> primary
>>>>> keys.  We then have some queries using JOIN statements that run slowly
>>>>> than
>>>>> we wanted.  How many indexes are recommended per table ?  For example
>>>>> should
>>>>> I have a index on all fields that will be used in a WHERE statement ?
>>>>>  Should the indexes be created with multiple fields ?  A example  of
>>>>> two
>>>>> basic queries
>>>>>
>>>>> SELECT auto_id, name, score
>>>>> FROM test_table
>>>>> WHERE score>  10
>>>>> ORDER BY score DESC
>>>>>
>>>>>
>>>>> SELECT auto_id, name, score
>>>>> FROM test_table
>>>>> WHERE score>  10
>>>>> AND name Like '%Red%'
>>>>> ORDER BY score DESC
>>>>>
>>>>> How many indexes should be created for these two queries ?
>>>>>
>>>>> Thanks,
>>>>> Neil
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>>  - michael dykman
>>>>  -<mdyk...@gmail.com>mdykman@**gmail.com <mdyk...@gmail.com>
>>>>
>>>>  May the Source be with you.
>>>>
>>>>
>>>>
>>>
>>>
>>
>>
> --
> MySQL General Mailing List
> For list archives: http://lists.mysql.com/mysql
> To unsubscribe:    
> http://lists.mysql.com/mysql?**unsub=mdyk...@gmail.com<http://lists.mysql.com/mysql?unsub=mdyk...@gmail.com>
>
>


-- 
 - michael dykman
 - mdyk...@gmail.com

 May the Source be with you.

Reply via email to