一. 測試背景
開發一個項目,數據庫用的是sqlserver。賬號表數據有一兩百萬,不算大,也不算小。在考慮是否要使用視圖,擔憂效率,百度了下資料,衆說紛紜,好吧,實踐是最好的證實,那麼咱們就來測試吧。
二. 測試環境
WIN8系統,內存8G,普通磁盤,sqlserver2012 。
三. 表和視圖結構(因爲用的是公司的表,因此避免糾紛我把字段給塗掉了)
四. 數據量大小html
AccountsData表和AccountsInfo各有400萬數據,那麼視圖VAccounts毫無疑問也是400萬條數據。
五. 開始測試
1. 咱們查詢視圖的時候會利用到基礎表的索引嗎?這裏我利用UserID來作WHERE查詢1000條數據。下面兩個截圖分表是查詢的結果,咱們能夠清楚到看到查基礎表AccountsInfo與查視圖VAccounts的效率是沒有差異的,因此咱們能夠肯定查視圖一樣會利用到基礎表的索引。
2. 從上面的測試咱們能夠看到,利用索引查基礎表和視圖幾乎沒有什麼區別,那麼若是咱們不利用索引字段來查詢呢?好比Like。下面是我查字段Nickname帶有「南方1999」字符的數據記錄,從兩次結果咱們能夠清楚的看到兩次查詢幾乎沒有任何區別。
六. 測試結果sql
能夠看到在sqlserver2012中視圖不會影響查詢效率,因此咱們能夠放心的使用。