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. 16,div+css的布局较table布局有什么优点?

    改版的时候更加方便,只要改css文件 页面加载速度更快,结构化清晰,页面显示简洁 表现与结构相分离 易于搜索引擎优化,排名更靠前

  2. Shiro入门学习之散列算法与凭证配置(六)

    一.散列算法概述 散列算法一般用于生成数据的摘要信息,是一种不可逆的算法,一般适合存储密码之类的数据,常见的散列算法如MD5.SHA等,一般进行散列时最好提供一个salt(“盐”),什么意思?举个栗子 ...

  3. VS2017中遇到不存在从string到const char*的转换函数的解决方法

    使用c_str()函数 c_str函数的返回值是const char*. c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同. 这是为了与c语言兼容,在c语言中没有stri ...

  4. win10中,vscode安装go插件排雷指南

    最近学习go,想着使用强大的vscode编写go,在安装go插件过程中,遇到了很多问题.下面记录解决方案. 1)win10环境,安装go,vscode,git 配置GOPATH环境变量,在我的电脑-& ...

  5. [CISCN2019 华北赛区 Day1 Web1]Dropbox

    0x01 前言 通常我们在利用反序列化漏洞的时候,只能将序列化后的字符串传入unserialize(),随着代码安全性越来越高,利用难度也越来越大.但在不久前的Black Hat上,安全研究员Sam ...

  6. Java面向对象简单知识总结-考试用

    类.对象.构造器 类定义了属性.方法,是抽象的,写在扩展名为java的文件中. 对象是类的实体,是具体的. 构造器:方法名与类名一致.没有返回类型,可以重载不能重写.在创建对象时调用.使用new调用实 ...

  7. ArrayList,LinkedList,vector的区别

    1,Vector.ArrayList都是以类似数组的形式存储在内存中,LinkedList则以链表的形式进行存储. 2.List中的元素有序.允许有重复的元素,Set中的元素无序.不允许有重复元素. ...

  8. ASA-ACL类型

    安全设备支持下面5种不同类型的ACl: 标准ACL 扩展ACL(可匹配v4&v6流量) EtherType ACL (以太网类型ACL) WebType ACL(Web类型ACL) 1.标准A ...

  9. Codeforces Round #611 (Div. 3) D

    There are nn Christmas trees on an infinite number line. The ii -th tree grows at the position xixi ...

  10. Nginx实现HTTP及TCP负载均衡

    这种通过一台apache的服务器把客户请求分别传递给两台tomcat叫负载均衡  ========================================= ================= ...