我有一个名为page
的表格,它代表了我网站上的每一个页面。MySQL:创建访问系统的最佳方式是什么?
page_id | page_subject | page_path
----------------------------------
1 | Foo | /Foo
2 | Bar | /Bar
我也表叫group
:
group_id | group_name
---------------------
1 | Users
2 | Admins
目标:如何定义获得单组每一页? 我确实创造了另一个表 - page_group
:
page_group | group_id
---------------------
1 | 1
1 | 2
表包含访问页面(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>)
...返回,我应该有机会获得页面。
工作正常,但似乎缓慢与行> 100,000 你会怎么做呢?你会以不同的方式做到这一点吗?
令人惊讶的是(对我来说),这是一个非常有效的方法来做这个检查 - 如果你有好的索引,mySQL可以很好地优化这个。 – Piskvor 2010-08-18 10:41:44
谢谢,我会试试看,并让你知道:) – Bald 2010-08-19 12:45:30