Духовность™
Продвинутый новичок
Тормозит запрос...
Привет.
Ситуация такая: есть таблица firms (фирмы), в которой есть поле id_region - ID региона страны. У каждого администратора есть права на конкретный регион, т.е. есть таблица прав regions_rules, в ней соответственно поля id_region, id_admin, permission.
Собственно, задача выбрать все регионы для конкретного админа решается просто. Запросом типа
[sql]
...
firms.id_region = regions_rules.id_region
AND regions_rules.id_admin = id_amina
AND regions_rules.permission = 1
...
[/sql]
но задача усложнилась - в таблицу фирм добавили флаг in_towns, наличие которого указывает на то, что фирмы, у которых проставлен данный флаг, нужно выводить в независимости от прав админа...
ну и получился собственно такой запрос:
[sql]
SELECT DISTINCT
firms . *
FROM firms, regions_rules
WHERE (
(
firms.id_region = regions_rules.id_region
AND
regions_rules.id_admin =1
AND
regions_rules.permission =1
)
)
OR
firms.in_towns =1
ORDER BY id_firm DESC LIMIT 1,10
[/sql]
этот запрос выполняется 3 секунды при 2000 записей. Это не тру. Что делать? Может как-то SQL изменить?
Привет.
Ситуация такая: есть таблица firms (фирмы), в которой есть поле id_region - ID региона страны. У каждого администратора есть права на конкретный регион, т.е. есть таблица прав regions_rules, в ней соответственно поля id_region, id_admin, permission.
Собственно, задача выбрать все регионы для конкретного админа решается просто. Запросом типа
[sql]
...
firms.id_region = regions_rules.id_region
AND regions_rules.id_admin = id_amina
AND regions_rules.permission = 1
...
[/sql]
но задача усложнилась - в таблицу фирм добавили флаг in_towns, наличие которого указывает на то, что фирмы, у которых проставлен данный флаг, нужно выводить в независимости от прав админа...
ну и получился собственно такой запрос:
[sql]
SELECT DISTINCT
firms . *
FROM firms, regions_rules
WHERE (
(
firms.id_region = regions_rules.id_region
AND
regions_rules.id_admin =1
AND
regions_rules.permission =1
)
)
OR
firms.in_towns =1
ORDER BY id_firm DESC LIMIT 1,10
[/sql]
этот запрос выполняется 3 секунды при 2000 записей. Это не тру. Что делать? Может как-то SQL изменить?