Скорость работы COUNT(*)

Falc

Новичок
sokol
Во-первых, интересно почему в запросе:

SELECT COUNT(*)
FROM elogic_news
LEFT JOIN elogic_status ON elogic_news.status = elogic_status.id
WHERE elogic_status.is_active

Ты используешь LEFT JOIN?
LEFT JOIN работает медлее чем обычный JOIN.


Во-вторых наворотить такой запрос это круто, по секрету тебе скажу что в MySQL на больших запросах с GROUP BY оптимизатор часто глючит.
 

fixxxer

К.О.
Партнер клуба
Нунифигасебе запрос.
А не думал базу перепроектировать?
 

sokol

Zavolga.Net
Falc
ну оптимизатору, можно прямо сказать в каком порядке соединять...

fixxxer
Необходимо разграничение прав на уровне записи

Есть список доступа `elogic_access_list` в котором в виде битовой маски хранятся права для групп и пользователей в виде:
record_id, tbl, user_id, group_id, access

У каждой записи есть владелец (owner)

При выводе списка записей нужно определить какие права на них имеет текущий пользователяь, для этого нужно проверить

1. Не является ли он владельцем записи
2. Не состоит ли он в группе с владельцем записи
3. Не определены ли права для него и его группы в списке доступа

Приоритетом при определении прав является список доступа.

Пользователь может состоять в нескольких группах.

Как тут упростить запрос/изменить структуру БД?
 

Falc

Новичок
sokol
А там проблемы не с порядком соединеия. Тем более что при разных данных может быть оптимальным разный порядок.
 
Сверху