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);