2012-04-30 84 views
1

我有一個表ReadNews如下:優化SQL/NHibernate的查詢

id: int 
User_id: int 
News_id : int 
DateRead : Datetime 
FacebookUser_id: int 

,這是存儲在表中。

我得到我的朋友列表的id,通過休息調用fb和存儲爲IEnumerable<string>在內存中。

我需要找到最新消息,我的朋友(IEnumerable<string>)按日期時間降序排序。我使用NHibernate。

構建此查詢的最有效方法是什麼?

本質上,我有所有閱讀新聞的fb用戶,但我只想得到我的朋友閱讀的新聞。

我在想這樣做的:

select * from readnews where FacebookUser_id in (IEnumerable<string>); 

回答

1

原則上,如果你都適當地索引,然後使用IN(x,y,z)是非常高性能的,linq/nh應該爲你做好準備。嘗試nhibernate裏諾確保雖然。

http://nhprof.com/

1

你有沒有發現任何性能問題呢? FacebookUser_id上的top n +索引應該沒問題。

這一切都取決於你擁有的數據量等問問自己,如果你沒有看到它的任何問題,你不試圖過早優化?