亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

大牛請進..問個關于 網易 評論 的問題 200分奉上

大牛請進..問個關于 網易 評論 的問題 200分奉上

慕姐4208626 2018-12-07 02:17:51
http://comment.news.163.com/news_guonei4_bbs/5U5VVMOP0001124J.html 這個是網易的評論.. 我現在想問的是大牛們是如何處理...如何設計數據庫.. 一種是直接將引用的數據直接存進數據庫....這種優點是方便處理..性能也高.就是評論內容字段會有點大. 另一種是在數據庫中新建一個字段 Parentid 來顯示...當parentid=null 的時候是沒用引用任何內容.. 當parentid !=null的時候.查找上一級ID..然后一直遞歸..直接ParentID=null.. ? 如果是你們設計的話..你們會如何設計 ... ? ? 順便再放上一個問題...請問一下 SQL 2005 "with as " 如何操作......自己找了一些資料.不太明白.. 我現在有字段 ? employeeID, ManagerID. ? ManagerID是employeeID的外鍵 我如何用 with as 語句得到 ?employeeID=1的所有上級.直到ManagerID=null..大概就是個遞歸的概念 ?
查看完整描述

5 回答

?
紅顏莎娜

TA貢獻1842條經驗 獲得超13個贊

在沒有想到更好的辦法前,還是直接寫入數據庫吧~使用Parentid沒有索引就會查的很慢了,建立索引的話也是硬盤開銷。犧牲硬盤的成本比犧牲速度的成本要便宜。

另外,如果用Parentid,那么引用的帖子如果修改或者刪除了怎么辦?引用者說的話就無法知道其原意了。

—————

想了想,如果不用第一種方法。想到一個效率更高些的方法:

每個非引用貼的ID為整數x10000(假設最多9999個回復的情況下),如12345 0000

引用帖的ID為原帖ID+1 即 12345 0001 ,12345 0002 等等

這樣,假如要得到ID為2220010的帖的所有引用時,只需要where id>=2220000 and id<= 2220010 就可以了。應該比遞歸快很多(ID為聚集索引)

?

(這樣取出的順序就和原來不一樣了,不過可以 order by postTime,還可以加一些邏輯,保證對多個post引用一個post的時候只按最大的ID取一次)

?

(另外,假如有這么一種情況,一個論壇有很多分區,每個分區又可以有子分區,子分區還可以“無限”有子分區。 在這種情況下,也盡量不要用parentId即遞歸,而是考慮使用位域(flags))

查看完整回答
反對 回復 2019-01-07
?
慕仙森

TA貢獻1827條經驗 獲得超8個贊

我想評論內容按照大小分為存儲在數據庫中和存儲在文件中,大評論數據庫中只存標志,標志指向內容所在的文件,在顯示時異步加載數據庫和文件中的評論。

遞歸這東西應該用到,不然怎么遍歷評論的評論呢?

?

with as 就是個結果集別名,

with test as?(select * from test)

select * from test where a=1;

你那個應該寫成

employeeID 所在表為employee,ManagerID所在表為Manager

select * from?employee as e,ManagerID as m where e.employeeID=1 and ManagerID<>null

查看完整回答
反對 回復 2019-01-07
?
慕慕森

TA貢獻1856條經驗 獲得超17個贊

可能是我沒說清楚..employeeID,ManagerID都在employee表中...其實是Sql2005自帶的數據庫AdventureWorks 中的HumanRecoures.Employee表
查看完整回答
反對 回復 2019-01-07
?
拉風的咖菲貓

TA貢獻1995條經驗 獲得超2個贊

恩.很不錯的思路...
查看完整回答
反對 回復 2019-01-07
  • 5 回答
  • 0 關注
  • 654 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號