A. 在sql中怎樣用指定索引查詢
格式為:
SELECT 欄位名表
FROM 表名表
WITH (INDEX(索引名))
WHERE 查詢條件
B. SQL 索引是針對select的還是針對where的
索引是根據你的條件來判斷是否使用索引的
舉個例子:有個D表,有D1(number),D2(varchar2),D3(number) 三個欄位,其中D1,D2欄位有作了索引。
select * from D ;--這時候盡管表中有索引,但是不會走索引,會全表掃描。
select D1 from D ;--這時候會走D1索引;
select * from D where D1=1,--這時候會走D1索引
select * from D where D2=1,--這時候不會走索引。盡管D2有索引,但是D2是字元型,where條件中是數值型,加上單引就可以走D2索引。
update ,delete和select 是同樣的。
C. sql where條件後需要用日期進行索引
我可以發給你oracle語句調優和索引使用指南的文檔,應該對你有幫助,你的郵箱發一下吧
另外回答你的問題
1.在索引列上使用函數是很少能使用索引的,即使使用了索引函數也很難保證走索引,這就是oracle的內部的機制,在cbo之後,oracle以cost作為最優plan的標准,這方面的內容要說的話就多了,你可以參看我給的文檔,自己體會
2.在not,or類似這種非的查詢是不走索引的,你可以用join來避免not的用法。
有問題繼續追問
D. sql索引是什麼
不是。
索引是在創建表或者在後期手動加的。
索引是對資料庫表中一列或多列的值進行排序的一種結構,索引的作用相當於圖書的目錄,可以根據目錄中的頁碼快速找到所需的內容。
索引創建例子
CREATE UNIQUE INDEX employeeID_ind ON emp_pay (employeeID)
CREATE [UNIQUE(用於指定鍵值是否唯一)] INDEX 索引名稱 ON 表(欄位1,欄位2)
E. sql server索引怎麼用
一、索引設計注意事項
(1)、檢查WHERE條件和連接條件
當一條SQL語句提交時,查詢優化器會根據表的信息查詢最優的訪問機制
1、優化器首先識別WHERE子句與連接條件中包含的列
2、優化器檢索這些列上的索引
3、優化器通過從索引上的維護統計來確定子句的選擇性以及評估索引的有效性
4、優化器根據前面幾個步驟的信息,選擇估計開銷最低的方式
[sql] view plain
DBCC FREEPROCCACHE
SET STATISTICS IO ON
SET STATISTICS TIME ON
SELECT p.ProctID,p.Name,p.StandardCost,p.Weight,p.Color,p.ProctNumber
FROM Proction.Proct AS p
WHERE p.ProctID=871
表 'Proct'。掃描計數 0,邏輯讀取 2 次,物理讀取 0 次,預讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預讀 0 次。
這里採用的資料庫是微軟提供的示例資料庫AdventureWorks2008。
WHERE條件裡面有ProctID,該欄位上面有一個聚簇索引(主鍵),根據優化器的選擇,最終選擇該索引
[sql] view plain
DBCC FREEPROCCACHE
SET STATISTICS IO ON
SET STATISTICS TIME ON
SELECT pm.Name,p.ProctID,p.Name,p.StandardCost,p.Weight,p.Color,p.ProctNumber
FROM Proction.Proct AS p
INNER JOIN Proction.ProctModel AS pm ON pm.ProctModelID=p.ProctModelID
WHERE p.ProctID=871
表 'ProctModel'。掃描計數 0,邏輯讀取 2 次,物理讀取 2 次,預讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預讀 0 次。
表 'Proct'。掃描計數 0,邏輯讀取 2 次,物理讀取 0 次,預讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預讀 0 次。
ProctModelID是ProctModel的主鍵,也是Proct的外鍵 ,ProctID是Proct的主鍵,查看執行計劃從上到下,從右到左。
首先根據ProctID=871查找Proct表,這里使用聚簇索引沒有問題。
第二部就是ProctModel表,這里根據連接條件來,發現也有可用的聚簇索引,所以上圖使用了兩個聚簇索引。
(2)、使用窄索引
在實際中,一般使用整形列來作為索引列,像VARCHAR、NVARCHAR等可能會很大,一般不用來作為索引列。
窄索引可以在8KB的索引頁面容納更多的行,這樣有許多好處
A、減少IO數量(讀取更少的8KB頁面)
B、是資料庫緩存更有效,SQL Server可以緩存更少的索引頁面,從而減少內存中索引頁面的邏輯讀
C、減少資料庫存儲空間
F. SQL表欄位如何建立索引難道就是添加SQL查詢語句
1、創建測試表,
create table test_index(id varchar2(20), v_date date);