Re: Efficient Correlated Update

Поиск
Список
Период
Сортировка
От Robert DiFalco
Тема Re: Efficient Correlated Update
Дата
Msg-id CAAXGW-w7EATqcRcE0PQ6YV4tnTZGyvxnTLHSa2-Y+J=YZEPkwQ@mail.gmail.com
обсуждение исходный текст
Ответ на Efficient Correlated Update  (Robert DiFalco <robert.difalco@gmail.com>)
Список pgsql-performance
Guys, let me know if I have not provided enough information on this post. Thanks!


On Thu, Aug 8, 2013 at 11:06 AM, Robert DiFalco <robert.difalco@gmail.com> wrote:
In my system a user can have external contacts. When I am bringing in external contacts I want to correlate any other existing users in the system with those external contacts. A users external contacts may or may not be users in my system. I have a user_id field in "contacts" that is NULL if that contact is not a user in my system

Currently I do something like this after reading in external contacts:

   UPDATE contacts SET user_id = u.id
   FROM my_users u 
   JOIN phone_numbers pn ON u.phone_significant = pn.significant 
   WHERE contacts.owner_id = 7 AND contacts.user_id IS NULL AND contacts.id = pn.ref_contact_id;

If any of the fields are not self explanatory let me know. "Significant" is just the right 7 most digits of a raw phone number. 

I'm more interested in possible improvements to my relational logic than the details of the "significant" condition. IOW, I'm start enough to optimize the "significant" query but not smart enough to know if this is the best approach for the overall correlated UPDATE query. :)

So yeah, is this the best way to update a contact's user_id reference based on a contacts phone number matching the phone number of a user?

One detail from the schema -- A contact can have many phone numbers but a user in my system will only ever have just one phone number. Hence the JOIN to "phone_numbers" versus the column in "my_users".

Thanks.

В списке pgsql-performance по дате отправления:

Предыдущее
От: Vik Fearing
Дата:
Сообщение: Re: subselect requires offset 0 for good performance.
Следующее
От: Kevin Grittner
Дата:
Сообщение: Re: Efficient Correlated Update