SQLSERVER所謂計算列,也就像ORACLE的虛擬列,插入表時不用插入該列值,它是根據其他列的值經過公式計算得到的新的值。方便查詢SQL,減少運算編寫的代碼,同時能夠提高一定的效率。
工具/原料
數據庫
方法/步驟
先看下普通的表,如果涉及到運算公式需要編寫sql。比如計算帶薪假期根據工齡的1.5倍,代碼如下。
為了節省sql編寫量,可以在表上創建新的計算列。公式就是sql上的算法挪過來。
點擊保存按鈕,再刷新一下,可以看到說明是計算列。
查詢代碼可以省略計算公式,直接查出來所有數據。
因為計算列默認是使用時運算,如果數據量大,每一條都運算那就非常影響效率。怎麼辦呢?別急,看下面還有個【是持久的】,這裡把它改成【是】。什麼意思呢?他就是相當於實際列了,可以加索引,主鍵等等。不是使用時計算,而是新增記錄及修改時,實時保存值。查詢時不用再計算,直接拿出來使用。
查詢方法不變,這樣效率最快了。計算列在下面這個系統表中可以查到sys.computed_columns
在這個表中可以看到計算公式。