畢竟數據庫這種東西會的人比較多,難度也相對較低。基本上如果不在商業公司工作,那麼這方麵知識也不一定會用到。
一個人長時間不接觸相關的技術,很容易就忘了相對基礎的內容。所以有些算法框架,已經重生過的自己,現在還能記住嗎?所以說,自己不能好逸惡勞,還是要好好再提升一下自己了。
羅紀未來想做的事情是很新銳的,所以還要趁著自己記得清楚,至少能把記住一些細節的模型都寫下來,不然等到自己能賽博煉丹的時候,卻少了至關重要的單方和硬件架構,那可涼涼了。
“羅紀xi?”李鎮賢問了一下。
“哦,不好意思,剛剛走神了。”羅紀接過李鎮賢的電腦,敲擊著鍵盤,說道:“你這裡的查詢使用了SELECT*,全選了所有的列,但是你的這層嵌套查詢中其實隻有id是用得到的。可以隻查詢id減少數據傳輸量。儘量避免全表掃描。”
李鎮賢點點頭:“是的,我是感覺應該是哪個地方出問題了,速度始終不理想。”
羅紀說道:“你之前是使用的什麼索引來加快查詢速度?”
李鎮賢說道:“Hash(哈希)索引我建立了,但是感覺速度不是特彆快。但是這應該是最快的索引法了,我在想可能是彆的地方出問題了。”
羅紀琢磨著:“雖然不會桶溢出,但是感覺......用B樹吧”
“B樹?”李鎮賢有些詫異:“可是用B樹不是更慢了?”
羅紀微微一笑:“你現在需要索引的數據裡,Hash值相等的太多了。有時候Hash索引遇到大量Hash值相等的情況後,性能真不一定就會比B樹索引高。你沒有發現嗎?現在大量的記錄指針信息存於同一個Hash值相關聯。這樣要定位某一條記錄時,就會特彆特彆麻煩,反而會浪費多次表數據的訪問,最後整體性能反而低下。所以,現在用Hash表已經不大適合了。這時候用B樹可能速度反而更快。”
“原來是這樣啊。”李鎮賢恍然大悟,再看向羅紀的目光裡多了點佩服。
羅紀歎了口氣:“要是再加上Redis就更好了。”
李鎮賢疑惑的詢問:“什麼?”
“一種NoSQL內存數據庫。”羅紀其實已經記不清Redis是什麼時候推出的,可能就是這兩年。看著對方一臉懵的表情,羅紀也不在意,因為這算不上什麼技術秘密。
甚至羅紀乾脆反問道:“你難道不知道嗎?首先,Redis的數據模型與RDBMS不同,它采用了更靈活的數據存儲和查詢方式,隻需要描述針對特定抽象數據類型的操作即可。其次,Redis將數據存儲在內存中,而非磁盤上,因此大大縮短了讀寫操作的訪問時間,這也是速度快的原因。當然,在存儲數據時需要采用適合後續快速檢索的方式。難以置信,你居然不知道?”
被這麼一問,反倒是李鎮賢開始自我懷疑了,說道:“好像聽過。不過我對於SQL的相關事務很久沒關心了。因為這次數據中心要來首爾開,我才重新研究起這個。”
羅紀在合適的時間點,擺出技術大拿的醜惡嘴臉,說道:“現在查詢時間縮短到了僅需1.1秒,速度比之前快了近4倍。這對於用戶體驗來說,算是很不錯了。但是伱彆驕傲,回去再優化一下。我覺得索引速度最快可以壓到0.1到0.3秒。”
“好的好的。”李鎮賢一邊答應著,一邊退出去。
羅紀看著時間,十分鐘後他假裝去洗手間,一路上看到眾人的目光果然有了點變化。從之前單純的禮貌,現在多了一些自己人的信賴。
隨後整個下午的工作就不多了。等到晚上,掐著點下班。
羅紀還得去小課堂兼職去呢!