① 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