我有一個名爲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