sqlserver創建索引
這個 ALTER DATABASE 語句用來修改資料庫的屬性,比如改變它的默認排序規則(即 COLLATE)。因此,你可以使用它來設置資料庫中所有表都區分大小寫。
要使用這個語句,你需要先確保你有足夠的許可權去修改資料庫。然後,你可以在 SQL Server Management Studio 中執行以下步驟:
打開 SQL Server Management Studio 並連接到你想要修改的資料庫伺服器。
在對象資源管理器中,右鍵單擊你想要修改的資料庫旅襪陸,然後選擇「屬性」。
在「資料庫屬性」窗口中,選擇「排序規則」選項卡。
在「排序規則」下拉列表中,選擇「Chinese_PRC_CS_AS」。
單擊「確定」按鈕以拆頃保存更改。
這樣,資料庫中的所有表都將區分大小寫。但是,如果你只想修改某個特定的表,那麼你可以在創建表時指定它的排序規則,或者使用 ALTER TABLE 語句來修改表的排序規則。
舉個例子,假設你想要修改名為「TBL_ACCOUNT」的表,使其區分大小寫,你可以在創建表時指定排序規則:
這個 ALTER DATABASE 語句用來修改資料庫的屬性,比如改變它的默認排序規則(即 COLLATE)。因此,你可以使用它來設置資料庫中所有表都區分大小寫。
要使用這個語句,你需要先確保你有足夠的許可權去修改資料庫。然後,你可以在 SQL Server Management Studio 中執行以下步驟:
打開 SQL Server Management Studio 並連接到你想要修改的資料庫伺服器。
在對象資源管理器中,右鍵單擊你想要修改的資料庫,然後選擇「屬性」。
在「資料庫屬性」窗口中,選擇「排序規則」選項卡。
在「排序規則」下拉列表中,選擇「Chinese_PRC_CS_AS」。
單擊「確定」按鈕以保存更改。
這樣,資料庫中的所有表都將區分大小寫。但是,如果你只想修改某個特定的表,那麼你可以在創建表時指定它的排序規則,或者使用好賣 ALTER TABLE 語句來修改表的排序規則。
舉個例子,假設你想要修改名為「TBL_ACCOUNT」的表,使其區分大小寫,你可以在創建表時指定排序規則:
CREATE TABLE TBL_ACCOUNT (
id INT PRIMARY KEY,
username VARCHAR(255) COLLATE Chinese_PRC_CS_AS,
password VARCHAR(255)
);
或者,如果你已經創建了表,你可以使用 ALTER TABLE 語句來修改表的排序規則:
ALTER TABLE TBL_ACCOUNT
ALTER COLUMN username VARCHAR(255) COLLATE Chinese_PRC_CS_AS;
這樣就可以讓表「TBL_ACCOUNT」區分大小寫了。
⑵ 在SQLServer中使用索引的技巧
在SQL Server中 為了查詢性能的優化 有時我們就需要對數據表通過建立索引的方式 目的主要是根據查詢要求 迅速縮小查詢范圍 避免全表掃描
索引有兩種類型 分別是聚集索引(clustered index 也稱聚類索引 簇集索引)和非聚集索引(nonclustered index 也稱非聚類索引 非簇集索引)
聚集索引在一個表中只能有一個 默認情況下在主鍵建立的時候創建 它是規定數據在表中的物理存儲順序 我們也可以取消主鍵的聚集索引 所以必須考慮資料庫可能用到的查詢類型以及使用的最為頻繁的查詢類型 對其最常用的一個欄位或者多個欄位建立聚集索引或者組合的聚集索引 它就是SQL Server會在物理上按升序(默認)或者降序重排數據列 這樣就可以迅速的找到被查詢的數據
非聚集索主要是數據存儲在一個地方 索引存儲在另一個地方 索引帶有指針指向數據的存儲位置 索引中的項目按索引鍵值的順序存儲 而表中的信息按另一種順序存儲 可以在一個表格中使用高達 個非聚集的索引 在查詢的過程中先對非聚集索引進行搜索 找到數據值在表中的位置 然後從該位置直接檢索數據 這使非聚集索引成為精確匹配查詢的最佳方法 因為索引包含描述查詢所搜索的數據值在表中的精確位置的條目
所以我們在選擇創建聚集索引的時候要注意以下幾個方面
) 對表建立主鍵時 就會為主鍵自動添加了聚集索引 如自動編號欄位 而我們沒有必要把聚集索引浪費在主鍵上 除非你只按主鍵查詢 所以會把聚集索引設置在按條件查詢頻率最高的那個欄位或者組合的欄位
) 索引的建立要根據實際應用的需求來進行 並非是在任何欄位上建立索引就能提高查詢速度 聚集索引建立遵循下面幾個原則
包含大量非重復值的列
使用下列運算符返回一個范圍值的查詢 BEEEN > >= < 和 <=
被連續訪問的列
返回大型結果集的查詢
經常被使用聯接或 GROUP BY 子句的查詢訪問的列;一般來說 這些是外鍵列 對ORDER BY 或 GROUP BY 子句中指定的列進行索引 可以使 SQL Server 不必對數據進行排序 因為這些行已經排序 這樣可以提高查詢性能
OLTP 類型的應用程序 這些程序要求進行非常快速的單行查找(一般通過主鍵) 應在主鍵上創建聚集索引
舉例來說 銀行交易日誌中對交易日期建立聚合索引 數據物理上按順序存於數據頁上 重復值也排列在一起 因而在范圍查找時 可以先找到這個范圍的起末點 且只在這個范圍內掃描數據頁 避免了大范圍掃描 提高了查詢速度 而如果我們對員工的基本信息表中性別的欄位列上建立聚集索引 就完全沒有必要 因為內容里只涉及到 男 與 女 兩個不同值
) 在聚集索引中按常用的組合欄位建立索引 形成復合索引 一般在為表建立多個主鍵的時候就會產生 如果一個表中的數據在查詢時有多個欄位總是同時出現則這些欄位就可以作為復合索引 這樣能形成索引覆蓋 提高where語句的查詢效率
)索引對查詢有一這的優化 但由於改變一個表的內容 將會引起索引的變化 頻繁的對數據操作如insert update delete語句將導致系統花費較大的代價進行索引更新 引起整體性能的下降 一般來講 在對查詢性能的要求高於對數據維護性能要求時 應該盡量使用索引 有時在這種操作資料庫比較頻繁的某些極端情況下 可先刪除索引 再對資料庫表更新大量數據 最後再重建索引 新建立的索引總是比較好用
索引在使用了長久的時候 就會產生很多的碎片 查詢的性能就會受到影響 這時候有兩種方法解決 一是利用DBCC INDEXDEFRAG整理索引碎片 還有就是利用DBCC DBREINDEX重建索引
DBCC INDEXDEFRAG 命令是聯機操作 所以索引只有在該命令正在運行時才可用 而且可以在不丟失已完成工作的情況下中斷該操作 這種方法的缺點是在重新組織數據方面沒有聚集索引的除去/重新創建操作有效
重新創建聚集索引將對數據進行重新組織 其結果是使數據頁填滿 填滿程度可以使用 FILLFACTOR 選項進行配置 這種方法的缺點是索引在除去/重新創建周期內為離線狀態 並且操作屬原子級 如果中斷索引創建 則不會重新創建該索引
我們來看看索引重建使用的方法
語法 DBCC DBREINDEX ( [ TableName [ index_name [ fillfactor ] ] ] )
參數 TableName
是要重建其指定的索引的表名 資料庫 所有者和表名必須符合標識符的規則 有關更多信息 請參見使用標識符 如果提供 database 或 owner 部分 則必須使用單引號 ( )
將整個 database owner table_name 括起來 如果只指定 table_name 則不需要單引號
index_name 是要重建的索引名 索引名必須符合標識符的規則 如果未指定 index_name 或指定為 就要對表的所有索引進行重建
fillfactor 是創建索引時每個索引頁上要用於存儲數據的空間百分比 fillfactor替換起始填充因子以作為索引或任何其它重建的非聚集索引(因為已重建聚集索引)的新默認值 如果 fillfactor 為 DBCC DBREINDEX 在創建索引時將使用指定的起始fillfactor
我們在查詢分析器中輸入如下的命令
DBCC DBREINDEX ( MyTable )
lishixin/Article/program/SQLServer/201311/22210
⑶ sqlserver 怎麼建索引
一、使用SQL Server界面操作創建
在SQL Server Management Studio中,選擇並右擊要創建索引的表,從彈出菜單中選擇「設計」,打開表設計器。右鍵單擊表設計器,從彈出菜單中選擇「索引/鍵」命令,打開「索引/鍵」對話框。對話框中列出了已經存在的索引。
單擊「添加」按鈕。在「選定的主/唯一鍵或索引」框顯示系統分配給新索引的名稱。
在「列」屬性下選擇要創建索引的列。可以選擇多達16列。為獲得最佳性能,最好只選擇一列或兩列。對所選的每一列,可指出索引是按升序還是降序組織列值。
如果要創建唯一索引,則在「是唯一的」屬性中選擇「是」。
設置完成後,單擊「確定」按鈕。
當保存表時,索引即創建在資料庫中。
二、使用CREATE INDEX語句創建索引:
CREATE[UNIQUE][CLUSTERED|NONCLUSTERED]INDEX索引名
ON{表名|視圖名}(列名[ASC|DESC][,...n])
例:
在資料庫HrSystem中為表Employees創建基於IDCard列的唯一索引IX_Employees,可以使用以下命令:
USEHrSystem
GO
CREATEUNIQUENONCLUSTEREDINDEX[IX_Employees]ONdbo.Employees(IdCard)
GO
⑷ sqlserver 怎麼建索引
語法:
CREATE [索引類型] INDEX 索引名稱
ON 表名(列名)
WITH FILLFACTOR = 填充因子值0~100
GO
/*實例*/
USE 庫名
GO
IF EXISTS (SELECT * FROM SYSINDEXES WHERE NAME='IX_TEST_TNAME')--檢測是否已經存在IX_TEST_TNAME索引
DROP INDEX TEST.IX_TEST_TNAME--如果存在則刪除
--創建索引
CREATE NONCLUSTERED INDEX IX_TEST_TNAME --創建一個非聚集索引
ON TEST(TNAME) --為TEST表的TNAME欄位創建索引
WITH FILLFACTOR = 30 --填充因子為30%
GO
附錄:
1.什麼是索引:資料庫中的索引是某個表中一列或多列值的集合和相應的指向表中物理標識這些值的數據頁的邏輯指針清單。
2.分類:
唯一索引(UNIQUE):不允許兩行具有相同的索引值(創建了唯一約束,系統將自動創建唯一索引)
主鍵索引:主鍵索引要求主鍵中的每個值是唯一的,(創建主鍵自動創建主鍵索引)
聚集索引(CLUSTERED):表中各行的物理順序與鍵值的邏輯(索引)順序相同,表中只能包含一個聚集索引,主鍵列默認為聚集索引
非聚集索引(NONCLUSTERED):表中各行的物理順序與鍵值的邏輯(索引)順序不匹配,表中可以有249個非聚集索引
3.創建索引的標准:用語頻繁搜索的列;用語對數據進行排序的列