Ryan,

On Thu, Mar 7, 2013 at 4:31 PM, Ryan Johnson
<ryan.john...@cs.utoronto.ca> wrote:
> On 07/03/2013 5:59 PM, Igor Korot wrote:
>>
>> Ryan,
>>
>> On Thu, Mar 7, 2013 at 5:26 AM, Ryan Johnson
>> <ryan.john...@cs.utoronto.ca> wrote:
>>>
>>> Well, you *do* want an index for the target side of the join, but for FK
>>> joins the existing PK index already takes care of that.
>>
>> OK,
>>
>>> At this point you only need to add an index on d.id to make the d.id=1
>>> test
>>> fast. And yes, it will make updates predicated on d.id faster as well.
>>
>> Well, I just checked and the update is on both id and playerid.
>> Do I need the index on both fields?
>
> Ah. That gets a bit more tricky. You can only use one index per table, and
> whether any index on the table is useful depends on the order of its key
> columns and what you do in the query.
>
> If you always update based on equality, it doesn't matter whether you index
> (id,playerid) or (playerid,id). If one is equality and the other something
> else, put equality first (e.g. in your query you have id=1 and playerid=?,
> so the index should be on id,playerid).

Now, my update is:

UPDATE ... WHERE id = 1 AND playerid = {1,2,3,etc};

meaning that it an equal sign but the value depends on the other
record I am updating
in the table a with PK playerid.

Which means that I need an index based on the (id,playerid) as it does
not matter how I
put those fields, correct?

Thank you.

>
> If both are non-equality, put the index on which ever column you think will
> narrow down the results best, but at that point it's getting into black
> magic territory.
>
>
> Ryan
>
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to