2015-09-08 69 views
1

我正在開發一個ECM軟件,其中一組用戶對文件夾擁有權限。當文件夾樹較大時,它可以在數據庫上生成大量行,例如30k或更多。permissons表上的性能問題

的權限表struture低於

group_folder_roles

  • id_group
  • id_folder
  • id_role

的主要問題是,當我要加載的所有文件夾的權限,以建立用戶文件夾樹。

還有更好的方法嗎?

UPDATE

我是做錯了什麼對我的代碼,並沒有實現。我不知道我怎麼沒注意到。

後來我正確測量了響應時間,大概是300毫秒,發現問題是實體框架查詢,轉換爲JSON和傳輸的總和。

我固定使用ADO和簡化了運輸過程中返回一個JSON這樣的:

{ 
    "folder" : 0, 
    "roles" : '0,1,2,3,4,5,6' 
} 

而爲了讓我更好的壓縮結果。

+2

如果沒有關於表和查詢以及RDBMS的更多具體信息,就無法回答。 –

回答

1

如果30k行給你性能問題,你需要明白爲什麼。你可能在做一些非常錯誤的事情。直到獲得數十萬行之前,我一直在使用dbs很難打破性能問題,而且聽起來您的數量級要小得多。這裏是你將要考慮幾件事情:

  1. 請問您的RDBMS支持遞歸查詢,或者通過一個CONNECT BY Oracle類型的方法或用更標準WITH RECURSIVE公共表表達式?這將有助於更好地利用指標和管理結果。
  2. 您可以研究是否使用規範化設計對權限進行了最佳建模,或者是否使用ACL數組執行得更好。這取決於RDBMS
  3. 與#2密切相關的是索引如何在特定rdbms上工作。他們幫助多少?你可以做些什麼來利用他們更多?
+0

謝謝,我已經解決了。而且你是對的,我在我的代碼和查詢中遇到了一些問題。 –