Необходимо получить данные по клиентам, хранящиеся в БД УКМ4 сервера.
в виде Фамилия, Имя, Телефон, E-mail.
в базе хранится около 100тыс.клиентов.
1 и 2 поля хранятся в таблице trm_in_clients, и запрос выдает нужные данные:
SQL код:
SELECT a.id, a.classifclient, b.name AS classname, a.sur_name, a.name, a.birthday
FROM trm_in_clients a, trm_in_classifclients b
WHERE a.global_id = 0 AND a.deleted = 0 AND a.ACTIVE = 1 AND a.classifclient = b.id
Телефон, E-mail - лежат в таблице trm_in_clients_properties_values в виде доп характеристик.
сам список доп. характеристик лежит в таблице trm_in_clients_properties
в моем случае 1 - телефон, 2 - E-mail.
добавляю в запрос получение этих данных, например телефона:
вариант 1
SQL код:
SELECT a.id, a.classifclient, b.name AS classname, a.sur_name, a.name, a.birthday,
c.value AS phonenumber
FROM trm_in_clients a
LEFT JOIN trm_in_clients_properties_values c ON c.client = a.id AND c.property = 1 AND c.deleted = 0 AND c.global_id = 0
, trm_in_classifclients b
WHERE a.global_id = 0 AND a.deleted = 0 AND a.ACTIVE = 1 AND a.classifclient = b.id
вариант 2
SQL код:
SELECT a.id, a.classifclient, b.name AS classname, a.sur_name, a.name, a.birthday,
(SELECT c.value FROM trm_in_clients_properties_values c
WHERE c.client = a.id AND c.property = 1 AND c.deleted = 0 AND c.global_id = 0) AS phonenumber
FROM trm_in_clients a, trm_in_classifclients b
WHERE a.global_id = 0 AND a.deleted = 0 AND a.ACTIVE = 1 AND a.classifclient = b.id
... и время выполнения запроса уходит в бесконечность...
при этом если в таблице trm_in_clients_properties_values добавить индекс на поле CLIENT, то запрос начинает отрабатывать мгновенно, но вносить изменения в структуру БД нежелательно....
что я делаю не так?!