Thanks to

MS sql could have materialized views ,similar with oracle MVs, using indexed views.

what is going on ? are they same thing ?

Here we go :

(1) general demo tables and rows

/****************************************************
AboutSQLServer.com blog
Written by Dmitri Korotkevitch
"Indexed views"
2011-03-24
*****************************************************/
set nocount on
go
set ANSI_NULLS on
set QUOTED_IDENTIFIER on
go

create table dbo.Clients
(
ClientId int not null,
ClientName varchar(32),
constraint PK_Clients
primary key clustered(ClientId)
)
go
create table dbo.Orders
(
OrderId int not null identity(1,1),
Clientid int not null,
OrderDate datetime not null,
OrderNumber varchar(32) not null,
Amount smallmoney not null,
Placeholder char(100) not null
constraint Def_Orders_Placeholder
default 'a',
constraint PK_Orders
primary key clustered(OrderId)
)
go

;with CTE(Num)
as
(
select 0
union all
select Num + 1
from CTE
where Num < 100
)
insert into dbo.Clients(Clientid, ClientName)
select Num, 'Client ' + convert(varchar(32),Num)
from CTE
option (MAXRECURSION 0)
go

;with CTE(Num)
as
(
select 0
union all
select Num + 1
from CTE
where Num < 100000
)
insert into dbo.Orders(Clientid, OrderDate, OrderNumber, Amount)
select
Num % 100,
DATEADD(day,-Num % 365, GetDate()),
'Order: ' + convert(varchar(32),Num),
Num % 100
from CTE
option (MAXRECURSION 0)
go

(2) -- no views select query
select
c.ClientId, c.ClientName,
count(o.OrderId) as [NumOfOrders],
sum(o.Amount) as [TotalAmount]
from
dbo.Clients c join dbo.Orders o on
c.ClientId = o.ClientId
group by
c.ClientId, c.ClientName
having
sum(o.Amount) > 90000
go

(9 row(s) affected)
Table 'Clients'. Scan count 0, logical reads 200, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Workfile'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Orders'. Scan count 1, logical reads 1823, physical reads 2, read-ahead reads 1798, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
(1 row(s) affected)

(3) creating indexing view
create view dbo.vClientWithOrders(
ClientId, ClientName,
NumOfOrders, TotalAmount
)
with schemabinding
as
select
c.ClientId, c.ClientName,
count_big(*) as NumOfOrders,
sum(o.Amount) as TotalAmount
from
dbo.Clients c join dbo.Orders o on
c.ClientId = o.ClientId
group by
c.ClientId, c.ClientName
go

create unique clustered index
IDX_vClientWithOrders_ClientId
on dbo.vClientWithOrders(ClientId)
go

--run again same query

(9 row(s) affected)
Table 'vClientWithOrders'. Scan count 1, logical reads 2, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

-- only query from the view
select *
from dbo.vClientWithOrders
where TotalAmount > 90000
go

(9 row(s) affected)
Table 'vClientWithOrders'. Scan count 1, logical reads 2, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

(4) With the standard edition of SQL Server, you can use ---with (noexpend)
select *
from dbo.vClientWithOrders with(noexpend)
where TotalAmount > 90000
go

and get the same result as above one

so,. let close it with MS web site words

Creating a unique clustered index on a view improves query performance because the view is stored in the database in the same way a table with a clustered index is stored. The query optimizer may use indexed views to speed up the query execution. The view does not have to be referenced in the query for the optimizer to consider that view for a substitution.

Indexed (materialized) views in SQL Server,different with Oracle (materialized) views的更多相关文章

  1. 在64位SQL Server中创建Oracle的链接服务器

    当我们同时使用SQL Server和Oracle来存储数据时,经常会用到跨库查询.为了方便使用跨库查询,一个最好的办法就是通过创建链接服务器来实现.既可以在SQL Server中创建Oracle的链接 ...

  2. 从 Microsoft SQL Server 迁移到 Oracle

    来源于:http://www.oracle.com/technetwork/cn/database/migration/sqlserver-095136-zhs.html Oracle SQL Dev ...

  3. SQL SERVER 2008向ORACLE 11G迁移示例

    来源于:http://www.cnblogs.com/hiizsk/ 由SQL SERVER 2008向ORACLE 11G迁移过程记录之一-表 使用Oracle Sql Developer将SQL ...

  4. 通过SQL Server 2008 访问Oracle 10g

    原文地址:http://www.cnblogs.com/gnielee/archive/2010/09/07/access-oracle-from-sqlserver.html 之前写过一篇关于SQL ...

  5. 在64位SQL Server中创建Oracle的链接服务器 Link Server

    有时候我们希望在一个sqlserver下访问另一个sqlserver数据库上的数据,或者访问其他oracle数据库上的数据,要想完成这些操作,我们首要的是创建数据库链接. 数据库链接能够让本地的一个s ...

  6. 【SQL Server数据迁移】64位的机器:SQL Server中查询ORACLE的数据

    从SQL Server中查询ORACLE中的数据,可以在SQL Server中创建到ORACLE的链接服务器来实现的,但是根据32位 .64位的机器和软件, 需要用不同的驱动程序来实现. 在64位的机 ...

  7. 【SQL Server数据迁移】32位的机器:SQL Server中查询ORACLE的数据

    从SQL Server中查询ORACLE中的数据,可以在SQL Server中创建到ORACLE的链接服务器来实现的,但是根据32位 .64位的机器和软件,需要用不同的驱动程序来实现. 在32位的机器 ...

  8. SQL Server 2008创建oracle链接服务器(心得)

    操作系统是32位的情况下,曾经没费太多时间创建好了到oracle的链接服务器.主要要点就是: 1.安装oracle精简客户端.当时我用的是版本比较低的“oracle9i310-客户端简化版”,安装好了 ...

  9. 大规模数据 从SQL SERVER导入到ORACLE方法

    来源于:http://blog.csdn.net/iitkd/article/details/40394789 来源:一个7G的SQL SERVER .bak文件要导入到Oracle中,经过实验,完成 ...

随机推荐

  1. 国密SM9算法C++实现(Linux)

    首先参考 Linux下编译并使用miracl密码库 该博文在linux下编译Miracl库. 编译完了,自然是要用的,下面介绍两种在C程序中使用miracl库的方法. 方法一: 1. 源码编译完后的必 ...

  2. 吴裕雄--天生自然神经网络与深度学习实战Python+Keras+TensorFlow:TensorFlow与神经网络的实现

    import tensorflow as tf import numpy as np ''' 初始化运算图,它包含了上节提到的各个运算单元,它将为W,x,b,h构造运算部件,并将它们连接 起来 ''' ...

  3. java 实现一段文字中,出现次数最多的字

    代码如下: public static void main(String[] args) { String str = "大批量,之前都没怎么注意过,这个问题确实不会,网上参考了下别人的,大 ...

  4. 洛谷 P5018 对称二叉树(搜索)

    嗯... 题目链接:https://www.luogu.org/problem/P5018 其实这道题直接搜索就可以搜满分: 首先递归把每个点作为根节点的儿子的数量初始化出来,然后看这个节点作为根节点 ...

  5. springmvc基于java配置的实现

    该案例的github地址:https://github.com/zhouyanger/demo/tree/master/springmvc-noxml-demo 1.介绍 之前搭建SpringMvc项 ...

  6. 基于 VS2019 配置 opencv4.x

    创建新项目 添加主函数文件 配置 注意,如果直接使用项目的属性去配置,那么创建新的项目的时候,还需要再配置一遍,在属性管理器里配置,创建新项目的时候,会自动应用 接下来,开始为软件配置目录和附加项.右 ...

  7. 在xwindows界面中切换KDE与GNOME

    在xwindows界面中切换KDE与GNOME 方法1: 在xwindows界面下通过菜单来切换,找到所需的菜单后执行,选择所需的桌面,重新启动xwindows即可. 方法2: 在命令提示符在xwin ...

  8. Qt连接mysql数据库遇到QMYSQL driver not loaded

    本文件向各位博友分享一下我在Qt开发过程中,连接mysql数据库时遇到的问题,以及解决的方法,希望对遇到同样问题的博友有所帮助. 工程运行环境:vs2015+Qt5.8 在开发过程中,编写数据库连接函 ...

  9. java课极限测试

    在临近国庆的9月30号补课日 碰到了惨绝人寰的java课极限测试 我从下午两点半做到晚上九点 不得不说人在烦躁的时候是真的没办法写代码的 根本不想思考也不想学习.最后的几个小时基本就是在叹息和坐着.也 ...

  10. 【Html 页面布局】

    float:left方式布局 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /& ...