去面試,拿出了筆試題,讓一個個講思路。
因為之前筆試時就不會,能讓去面試,已很詫異。看面試官的狀態,以為只是HR面。結果,悲劇了,技術面。
筆試之后,盡管知道筆的稀爛無比,但是沒能回來進行總結和思考。這次面試掛,也是死有余辜。
下面開始說,提到的一題。就是動態添加字段。
比如,有用戶信息,用戶名,年齡。后來,需要添加用戶單位。怎么來實現?
方法一:直接alter,這是最容易想到的。但是,在數據庫設計中 ,這個應該是一大忌。而且面試官要求不改變表結構。那好,想出來方法二。
方法二:可以建一個表,表設計為 用戶ID 和工作單位。這個方法,面試官說,可以。但是,還有其他方法。絞盡腦汁也沒想出來,問豬頭,豬頭說了種方法。即方法三。
方法三:可以設計個 用戶信息表
表設計為
用戶ID 屬性名 值
內容為
1 姓名 男
然后建個表,存屬性
比如 1 姓名
2 年齡
3 工作單位
那剛才那個 表的設計 就可以變成
1 1 男
1 2 19
1 年齡 19
1 工作單位 XXX
然后建個表,存屬性
比如 1 姓名
2 年齡
3 工作單位
那剛才那個 表的設計 就可以變成
1 1 男
1 2 19
1 3 XXXX
唯一約束,放在第一列和第二列,索引建好,就好了。
這個題目,和行轉列就有些相似了,行轉列的問題,曾經思考過,豬頭也做了解釋,可惜貌似有點不懂。
行轉列
為什么要在第一列
就是用戶ID建聚集索引
就是 聚集索引 和數據 物理存儲關系 我就不說了
你網上可以自己查
為什么要在第一列
就是用戶ID建聚集索引
就是 聚集索引 和數據 物理存儲關系 我就不說了
你網上可以自己查
第二列的ID 是可以一直往里加的
磁盤指針取數據
先找索引表
找到后 數據都在 物理地址后面
直接取就可以了
這樣 性能幾乎等同
數據在一列的 性能
先找索引表
找到后 數據都在 物理地址后面
直接取就可以了
這樣 性能幾乎等同
數據在一列的 性能
第二個問題 時間 參數1 參數2 參數3 …… 參數n
根據年 月 周 查詢 某個參數的值 ps:需要高效查詢
主要優化 這個 年月周額
題目 意思
參數1 -N 什么的忽略不急
忽略不計
主要 要進行時間拆分
年 月 拆分為8位整形
因為日不要 查詢
周要算 放如一列
建好索引
可以了
不分庫?
大學題目 考慮 啥分庫啊
我還 分布式呢
我還 集群數據庫呢
根據年 月 周 查詢 某個參數的值 ps:需要高效查詢
主要優化 這個 年月周額
題目 意思
參數1 -N 什么的忽略不急
忽略不計
主要 要進行時間拆分
年 月 拆分為8位整形
因為日不要 查詢
周要算 放如一列
建好索引
可以了
不分庫?
大學題目 考慮 啥分庫啊
我還 分布式呢
我還 集群數據庫呢
關於第二個題,看了豬頭的回答,也不想潑他冷水,就先這樣吧