① sqlserver查看哪些表有分区
SQLSERVER中,有时需要知道已经建了哪些分区表,从哪里看?
1、直接用SQL语句查:
--分区数大于1的,就是我们想查看的分区表:
SELECT p.*,'|' AS SP ,t.* FROM sys.partitions AS p
inner JOIN sys.tables AS t ON p.object_id = t.object_id
inner join (
select object_id as object_id2,index_id, count(*) AS CNT FROM sys.partitions
group by object_id,index_id
having count(*)>1
) s on s.object_id2 = p.object_id
WHERE p.partition_id IS NOT NULL
order by t.name;
2、在管理器中查看:
Databases > [数据库名称] 节点 > 存储(Storage) 节点 >
\ 分区架构(Partition Schemes ) 节点 > 选中一项 > 右键 > 查看依赖
\ 分区函数(Partition Functions ) 节点 > 选中一项 > 右键 > 生成脚本
3、有作多分区的表,属性的 存储(Storage) 会有 Partitioning 信息。
② sqlserver分区表,可以不可以同时根据某几个字段分区
/********* 创建一个分布式分区视图 ***************/
/********* [email protected] 邀月 ***************/
USE master
GO
EXEC sp_addlinkedserver
'AP4\NET2013',
N'SQL Server'
GO
-- 跳过远程实例架构表的检查,以提升性能,邀月注
EXEC sp_serveroption 'AP4\NET2013', 'lazy schema validation', 'true'
GO
--创建测试数据库
IF NOT EXISTS (SELECT name
FROM sys.databases
WHERE name = 'RemoteViewTest2012')
BEGIN
CREATE DATABASE RemoteViewTest2012
END
GO
--打开测试库
Use RemoteViewTest2012
GO
--创建上海分公司的点击表
CREATE TABLE dbo.WebHits_ShangHai
(WebHitID uniqueidentifier NOT NULL,
WebSite varchar(20) NOT NULL ,
HitDT datetime NOT NULL,
CHECK (WebSite = 'ShangHai'),
CONSTRAINT PK_WebHits PRIMARY KEY (WebHitID, WebSite))
第二个实例:
/***************实例 AP4\NET2013(SQL Server 2008) *********/
/********* [email protected] 邀月 ***************/
USE master
GO
EXEC sp_addlinkedserver
'AP4\NET2012',
N'SQL Server'
GO
-- 跳过远程实例架构表的检查,以提升性能,邀月注
EXEC sp_serveroption 'AP4\NET2012', 'lazy schema validation', 'true'
GO
IF NOT EXISTS (SELECT name
FROM sys.databases
WHERE name = 'RemoteViewTest2012')
BEGIN
CREATE DATABASE RemoteViewTest2012
END
GO
--打开测试库
Use RemoteViewTest2012
GO
--创建北京分公司的点击表
CREATE TABLE dbo.WebHits_BeiJing
(WebHitID uniqueidentifier NOT NULL,
WebSite varchar(20) NOT NULL ,
HitDT datetime NOT NULL,
CHECK (WebSite = 'BeiJing'),
CONSTRAINT PK_WebHits PRIMARY KEY (WebHitID, WebSite))
二、在两个实例中分别创建视图
/***************实例 AP4\NET2012(SQL Server 2008) *********/
/********* [email protected] 邀月 ***************/
--打开测试库
Use RemoteViewTest2012
GO
--创建分区视图
CREATE VIEW dbo.v_WebHits AS
SELECT WebHitID,
WebSite,
HitDT
FROM RemoteViewTest2012.dbo.WebHits_ShangHai
UNION ALL
SELECT WebHitID,
WebSite,
HitDT
FROM [AP4\NET2013].RemoteViewTest2012.dbo.WebHits_BeiJing
GO
/***************实例 AP4\NET2013(SQL Server 2008) *********/
/********* [email protected] 邀月 ***************/
--打开测试库
Use RemoteViewTest2012
GO
--创建分区视图
CREATE VIEW dbo.v_WebHits AS
SELECT WebHitID,
WebSite,
HitDT
FROM RemoteViewTest2012.dbo.WebHits_BeiJing
UNION ALL
SELECT WebHitID,
WebSite,
HitDT
FROM [AP4\NET2012].RemoteViewTest2012.dbo.WebHits_ShangHai
GO
③ sqlserver 分区表 左边界,右边界什么意思
先在"视图"模块下把"标尺"调用出来,再用鼠标在上方标尺两端调左右边界后用鼠标在左方标尽两端调上下边界.或者到"打印设置"里面设置上下左右边界参数
④ SqlServer什么时候需要做分区表
SQL是一种大型的数据库管理系统。只要就是建立连接数据库的平台。要注意的就是:编写代码的是候不要出错。我们也是学了点SQL就是查询、新建视图(view)、修改(updata)、删除(Delete)、触发器(Trigger) 存储过程(saving process) 小弟也就知道这么多了也就一点点,关键还是要靠自己。视图,触发器,存储过程查询,删除,修改表连接,关联(内,外) 主要的学哈如果是要数据库开发那就比较多了简单的使用这就够了
⑤ sqlserver 怎么样优化性能
SQL Server数据库查询速度慢的原因有很多,常见的有以下几种:
1、没有索引或者没有用到索引(这是查询慢最常见的问题,是数据库设计的缺陷)
2、I/O吞吐量小,形成了瓶颈效应。
3、没有创建计算列导致查询不优化。
4、内存不足
5、网络速度慢
6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)
7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)
8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。
9、返回了不必要的行和列
10、查询语句不好,没有优化
●可以通过以下方法来优化查询 :
1、把数据、日志、索引放到不同的I/O设备上,增加读取速度,以前可以将Tempdb应放在RAID0上,SQL2000不在支持。数据量(尺寸)越大,提高I/O越重要。
2、纵向、横向分割表,减少表的尺寸(sp_spaceuse)
3、升级硬件
4、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。注意填充因子要适当(最好是使用默认值0)。索引应该尽量小,使用字节数小的列建索引好(参照索引的创建),不要对有限的几个值的字段建单一索引如性别字段。
5、提高网速。
6、扩大服务器的内存,Windows 2000和SQL server 2000能支持4-8G的内存。
配置虚拟内存:虚拟内存大小应基于计算机上并发运行的服务进行配置。运行 Microsoft SQL Server? 2000时,可考虑将虚拟内存大小设置为计算机中安装的物理内存的1.5倍。如果另外安装了全文检索功能,并打算运行Microsoft搜索服务以便执行全文索引和查询,可考虑:将虚拟内存大小配置为至少是计算机中安装的物理内存的3倍。将SQL Server max server memory服务器配置选项配置为物理内存的1.5倍(虚拟内存大小设置的一半)。
7、增加服务器CPU个数;但是必须 明白并行处理串行处理更需要资源例如内存。使用并行还是串行程是MSSQL自动评估选择的。单个任务分解成多个任务,就可以在处理器上运行。例如耽搁查询 的排序、连接、扫描和GROUP BY字句同时执行,SQL SERVER根据系统的负载情况决定最优的并行等级,复杂的需要消耗大量的CPU的查询最适合并行处理。但是更新操作UPDATE,INSERT, DELETE还不能并行处理。
8、如果是使用like进行查询的话,简单的使用index是不行的,但是全文索引,耗空间。 like ''a%'' 使用索引 like ''%a'' 不使用索引用 like ''%a%'' 查询时,查询耗时和字段值总长度成正比,所以不能用CHAR类型,而是VARCHAR。对于字段的值很长的建全文索引。
9、DB Server 和APPLication Server 分离;OLTP和OLAP分离
10、分布式分区视图可用于实现数据库服务器联合体。
联合体是一组分开管理的服务器,但它们相互协作分担系统的处理负荷。这种通过分区数据形成数据库服务器联合体的机制能够扩大一组服务器,以支持大型的多层 Web 站点的处理需要。有关更多信息,参见设计联合数据库服务器。(参照SQL帮助文件''分区视图'')
a、在实现分区视图之前,必须先水平分区表
b、 在创建成员表后,在每个成员服务器上定义一个分布式分区视图,并且每个视图具有相同的名称。这样,引用分布式分区视图名的查询可以在任何一个成员服务器上 运行。系统操作如同每个成员服务器上都有一个原始表的复本一样,但其实每个服务器上只有一个成员表和一个分布式分区视图。数据的位置对应用程序是透明的。
11、重建索引 DBCC REINDEX ,DBCC INDEXDEFRAG,收缩数据和日志 DBCC SHRINKDB,DBCC SHRINKFILE. 设置自动收缩日志.对于大的数据库不要设置数据库自动增长,它会降低服务器的性能。
在T-sql的写法上有很大的讲究,下面列出常见的要点:首先,DBMS处理查询计划的过程是这样的:
1、 查询语句的词法、语法检查
2、 将语句提交给DBMS的查询优化器
3、 优化器做代数优化和存取路径的优化
4、 由预编译模块生成查询规划
5、 然后在合适的时间提交给系统处理执行
6、 最后将执行结果返回给用户。
其次,看一下SQL SERVER的数据存放的结构:一个页面的大小为8K(8060)字节,8个页面为一个盘区,按照B树存放。
⑥ sqlserver 为什么用视图能提高查询效率
你说的是 普通视图? 还是分区视图啊?
普通视图 不会大幅提高查询效率啊, 能提高点开发效率倒是真的。
分区视图, 某些情况下, 倒是可以大幅度提高查询的效率。
索引视图(物化视图) ,倒是可以提升查询效率,但是那也是靠创建视图后的
CREATE UNIQUE CLUSTERED INDEX 来提升的。
⑦ sqlserver创建视图
create view 视图名
as
select *别名from 表1
union
select *别名from 表2
字段一一对应,默认会以第一条select的列名为准,你也可以再套一层select进行其他操作,数据会去重,union all 不会去重
⑧ 如何在sqlserver中的视图
打开sql server management studio,依次展开到视图
右键点击,选择新建视图
选中建立图片需要的表,然后点击添加(可以添加多个)
添加完后,点击关闭
点击表中的复选框,来添加一些列,在最下面的框中会自动生成相应
也可以在下面的代码框中直接输入一些代码
点击空白处,并使用快捷键Ctrl+S进行保存
创建视图成功
⑨ sqlserver如何查看视图
Sp lerver,它的这个视图,你只需要把它的一个图片打开之后,就能够看看上的一个整体的视图了。
⑩ 主流数据库的命令有什么区别
我先抛砖引玉:
1. 开发性: SQLSERVER不能,ORACLE能装在UNIX上
2. 分区表: SQLSERVER不能,ORACLE能根据INDEX的值的范围,把数据存放到
不同的硬盘空间.
3. AUTONOMOUS_TRANSACTION;SQLSERVER不能,ORACLE能在主TRANSACTION中独立
COMMIT或ROLLBACK子TRANSACTION而不影响主TRANSACTION.
请继续,高分伺候
---------------------------------------------------------------
4.Oracle可以利用回滚表空间查询以前(如1小时前)的信息,SQLServer不能
5.Oracle可以进行用户资源管理(CPU使用率等),SQLServer不能
6.Oracle支持Label Security,SQLServer不能
---------------------------------------------------------------
支持一下,来帖一段
开放性:
SQL Server
只能在windows 上运行,没有丝毫的开放性,操作系统的系统的稳定对数据库是十分重要的。Windows9X系列产品是偏重于桌面应用,NT server只适合中小型企业。而且windows平台的可靠性,安全性和伸缩性是非常有限的。它不象unix那样久经考验,尤其是在处理大数据量的关键业务时.
Oracle
能在所有主流平台上运行(包括 windows)。完全支持所有的工业标准。采用完全开放策略。可以使客户选择最适合的解决方案。对开发商全力支持。
可伸缩性,并行性
SQL server
DB2
并行实施和共存模型并不成熟。很难处理日益增多的用户数和数据卷。伸缩性有限。
Oracle
平行服务器通过使一组结点共享同一簇中的工作来扩展windownt的能力,提供高可用性和高伸缩性的簇的解决方案。
如果windowsNT不能满足需要, 用户可以把数据库移到UNIX中。
安全性
SQL server
没有获得任何安全证书。
Oracle Server
获得最高认证级别的ISO标准认证。
性能
SQL Server
多用户时性能不佳
Oracle
性能最高, 保持windowsNT下的TPC-D和TPC-C的世界记录。
客户端支持及应用模式
SQL Server
C/S结构,只支持windows客户,可以用ADO,DAO,OLEDB,ODBC连接.
Oracle
多层次网络计算,支持多种工业标准,可以用ODBC,JDBC,OCI等网络客户连接
操作简便
SQL Server
操作简单,但只有图形界面.
Oracle
较复杂, 同时提供GUI和命令行,在windowsNT和unix下操作相同
使用风险
SQL server
完全重写的代码,经历了长期的测试,不断延迟,许多功能需要时间来证明。并不十分兼容早期产品。使用需要冒一定风险。
Oracle
长时间的开发经验,完全向下兼容。得到广泛的应用。完全没有风险。
---------------------------------------------------------------
Oracle可以建立位图索引,SQLServer不能。
Oracle可以建立函数索引,SQLServer不能。
SQLServer不支持前触发器,所有都是后触发器。
关于Oracle分区表,SQLServer 2000可以使用分区视图,原理也是一样,把不同物理空间的表联系在一起。
SQLServer能支持嵌套事务,事务上加上名字就好,就是说能在主事务中操作子事务。
---------------------------------------------------------------
oracle:
length() lengthb()
sqlserver:
datalength()
---------------------------------------------------------------
不了解sql server
---------------------------------------------------------------
似乎SQLServer只是表级触发器,不支持行级触发器
---------------------------------------------------------------
SQL好象也有命令行的。SQL也支持JDBC的。
ORACLE备份方式比较多,有STANDBY、RMAN、IMP等,SQL就比较简单了。
ORACLE可是实现多个日志文件的镜象,而SQL只有一个日志文件。
ORACLE有很少但很多数量的归档日志,而SQL只有一个日志文件,经常会增加到很大。
ORACLE的BLOCK SIZE可以根据OLTP或者DSS不同的应用自己设置,而SQL只能为8K。
ORACLE的内存是在数据库启动时就由参数文件决定了的,而SQL可以根据应用自动改变。
---------------------------------------------------------------
ORACLE有专门实现树形查询的语法,而SQL没有。
---------------------------------------------------------------
ORACLE可以修改字符集
SQLSERVER不能,必须重新安装
---------------------------------------------------------------
ORACLE可以安装各种平台
SQLSERVER不行
---------------------------------------------------------------
ORACLE可以卖的很贵却还有人买
SQLSERVER不行
---------------------------------------------------------------
也不太了解sqlserver。
它有Orcle中的分析函数和锁吗?
---------------------------------------------------------------
TO:ccbzzp(ccbzzp)
ORACLE可以修改字符集
SQLSERVER不能,必须重新安装
有问题,在SQL SERVER6.5是不可以的,在SQLSERVER2000已经完全可以
EXAMPLE:ALTER DATABSE DB_NAME COLLATE CHINESE_PRC_CI_AS
---------------------------------------------------------------
TO:OldMan0516(凡人0516)
MSSQL SERVER2000是完全可以行触发的!!!
如果大家有和问题可以到SQLSERVER板块去看看:-)
---------------------------------------------------------------
跟本不是一个量级上的东西,没什么可比性。
sql server也没说要和oracle比呀,人家在windowns平台自我完善呢。
---------------------------------------------------------------
---------------------------------------------------------------
ORACLE可以修改字符集
SQLSERVER不能,必须重新安装更改排序规则。
-------------------------------------
alter database 数据库 collate 排序规格
其中,某些排序规则指定CI 不区分大小写,CS 指定区分大小写。
如:alter database 数据库 COLLATE Chinese_PRC_CI_AS
不区分大小写,而
alter database 数据库 COLLATE Chinese_PRC_CS_AS
使之区分大小写。
使用如下命令,可以获得更多的规则:
SELECT *
FROM ::fn_helpcollations()
---------------------------------------------------------------
oracle可以有java过程sqlserver没有,而sqlserver可以用dll。
oracle9i有分析函数,sqlserver没有
oracle有rownum等伪列,sqlserver没有
sqlserver有full join,oracle9i才有
如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!
vaela