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

  • Автор темы Автор темы sokol
  • Дата начала Дата начала
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 оптимизатор часто глючит.
 
Нунифигасебе запрос.
А не думал базу перепроектировать?
 
Falc
ну оптимизатору, можно прямо сказать в каком порядке соединять...

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

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

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

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

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

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

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

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