[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ORDER BY по большому количеству строк
chee
Есть такой запрос

SELECT contacts.id , LTRIM(RTRIM(CONCAT(IFNULL(contacts.last_name,''),' ',IFNULL(contacts.first_name,''),' ',IFNULL(contacts.middle_name,'')))) as name, contacts.first_name , contacts.last_name , contacts.middle_name , contacts.salutation , accounts.name account_name, jtl0.account_id account_id, contacts.account_id , contacts.phone_id , contacts.title , contacts.phone_work , contacts.phone_mobile , contacts.is_actual , jt1.user_name assigned_user_name , jt1.created_by assigned_user_name_owner , 'Users' assigned_user_name_mod, contacts.assigned_user_id
FROM contacts
LEFT JOIN accounts_contacts jtl0 ON contacts.id=jtl0.contact_id AND jtl0.deleted=0

LEFT JOIN accounts accounts ON accounts.id=jtl0.account_id AND accounts.deleted=0
AND accounts.deleted=0
LEFT JOIN users jt1 ON contacts.assigned_user_id=jt1.id AND jt1.deleted=0

AND jt1.deleted=0 where contacts.deleted=0
ORDER BY name
LIMIT 0,21


Выдает следующий EXPLAIN


*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: contacts
type: ref
possible_keys: idx_contacts_del_last,idx_cont_del_reports,idx_del_id_user
key: idx_contacts_del_last
key_len: 2
ref: const
rows: 183694
Extra: Using where; Using filesort
*************************** 2. row ***************************
id: 1
select_type: SIMPLE
table: jtl0
type: ref
possible_keys: idx_contid_del_accid
key: idx_contid_del_accid
key_len: 113
ref: y2.contacts.id,const
rows: 1
Extra: Using index
*************************** 3. row ***************************
id: 1
select_type: SIMPLE
table: accounts
type: eq_ref
possible_keys: PRIMARY,idx_accnt_id_del,idx_accnt_assigned_del
key: PRIMARY
key_len: 108
ref: y2.jtl0.account_id
rows: 1
Extra:
*************************** 4. row ***************************
id: 1
select_type: SIMPLE
table: jt1
type: eq_ref
possible_keys: PRIMARY
key: PRIMARY
key_len: 108
ref: y2.contacts.assigned_user_id
rows: 1
Extra:


Проседает при сортировке строк, что показывает профайлер и Using filesort в Extra.

Как можно избавиться от Using filesort при этом оставив сортировку, ну или как ускорить сортировку при использовании filesort. Возможно стоит какие-то буферы сортировок в настройках увеличить, но какие?

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.