내 웹 사이트의 모든 단일 페이지를 나타내는 page
이라는 테이블이 있습니다.MySQL : 액세스 시스템을 만드는 가장 좋은 방법은 무엇입니까?
group_id | group_name
---------------------
1 | Users
2 | Admins
목표 :
page_id | page_subject | page_path
----------------------------------
1 | Foo | /Foo
2 | Bar | /Bar
는 또한 표는 group
라고 어떻게 하나의 그룹에 대한 모든 페이지에 대한 액세스 권한을 정의하려면?
page_group | group_id
---------------------
1 | 1
1 | 2
페이지의 표 (page_group
)에 액세스 할 수있는 그룹이 포함되어 있습니다 : page_group
- 나는 다른 테이블을 작성했다.
CREATE FUNCTION `PAGE_ACCESS`(`pageId` INT, `groupId` MEDIUMINT)
BEGIN
RETURN IF((SELECT COUNT(*) FROM `page_group` WHERE page_id = pageId AND group_id = groupId) > TRUE, FALSE);
END;
가 지금은 그런 식으로 뭔가를 할 수 :
SELECT *
FROM page
WHERE <conditions> AND PAGE_ACCESS(page_id, <group_id>)
... 난에 액세스 할 수 있어야 페이지를 반환
나는 기능을 썼다.잘 작동하지만 행이 느린 것 같습니다.> 100000 어떻게 하시겠습니까? 다른 방식으로 그렇게 할 수 있습니까?
놀랍게도 (나에게)이 검사는 매우 효율적인 방법입니다. 좋은 인덱스를 가지고 있다면 mySQL을 최적화 할 수 있습니다. – Piskvor
감사합니다, 나는 그것을 시도하고 알려 드리겠습니다 :) – Bald