上一節我們詳細講解了計算列以及計算列持久化的問題,本節我們依然如前面講解來看看二者查詢性能問題,簡短的内容,深入的了解,Always to review the basics。
我們開始建立兩個一樣的表并都插入100條資料來進行比較,對于計算列我們重新進行建立計算列和非計算列持久化。
此時我們來運作兩個表對計算列和計算列持久化列的查詢

此時二者的開銷是一樣的,隻是非持久化列多了一個Compute Scalar操作,主要是因為它計算值是在運作時,此時我們來看看操作成本。
我們看到二者性能還是有一點差異,是以我們能夠知道如果計算操作比較複雜時利用持久化來提前進行計算性能會比非持久化列更好。是不是所有情況下持久化列性能都比持久化列性能要好呢?繼續往下看。
我們再來建立測試表并插入1萬條資料來進行比較。
接下來在兩表上建立持久化計算列和非持久化計算列
最後我們進行查詢看看查詢計劃結果
到這裡我們發現非持久化計算列性能要比持久化計算列性能要好,和上面對照的話我已經明确進行了标記定義列的大小以及插入行的多少是不同的,是以對于持久化列和非持久化列二者并沒有絕對性能的誰好誰好,當我們想要看二者誰性能更佳時,我們可能需要考慮定義列的大小、資料行的多少等等。下面我們還看最後一種情況,就是在計算列上來建立索引。
我們繼續建立測試表
在ComputeColumn表上建立計算列并建立一個非聚集索引
在ComputeColumnCompare表上建立計算列
最後查詢兩個表看看查詢計劃結果
到此我們算是結束了對于計算列以及關于計算列持久的概念和性能的分析,下節我們再看看其他查詢的知識,接着就進入表表達式的學習,簡短的内容,深入的了解,我們下節再會。