怎么创建索引和使用索引呢
这样创建吗?
CREATE INDEX CIDS ON New(CID)我创建了索引
然后计算一下时间declare @date1 datetime
select @date1=getdate()
select * from New where CID=3
declare @date2 datetime
--测试语句
select @date2=getdate()
select datediff(millisecond, @date1, @date2) 发现好象没差多少,反而创建索引用的时间有时还更多!网上看了好多资料
还是一头雾水!
这样创建吗?
CREATE INDEX CIDS ON New(CID)我创建了索引
然后计算一下时间declare @date1 datetime
select @date1=getdate()
select * from New where CID=3
declare @date2 datetime
--测试语句
select @date2=getdate()
select datediff(millisecond, @date1, @date2) 发现好象没差多少,反而创建索引用的时间有时还更多!网上看了好多资料
还是一头雾水!
解决方案 »
- 请问《ASP.NET 3.5高级编程》第五版这本书怎么样?(有目录)
- WebService中实现上传下载文件
- 昨天我看了一个“Asp.net简单饼图XML投票系统源码”我出现了一个疑问
- 另一个 OleDbParameterCollection 中已包含 OleDbParameter。
- 最后40分请问!!!!!
- 高分求动态生成数据查询语句(sql Reporting Services)?
- 帮帮我GDI+ C#的问题
- 初学ASP.NET,关于连接数据库问题.在线等待.
- 我的DataTable绑定到多个DropDownList时最终的结果是都是最后一个DefaultView的过滤结果
- ASPX 读取 XML 的问题。
- 求教 跳转问题
- 拜求高手指点,ASP.NET中调用非托管DLL的问题。。
你想象一下
索引就是将数据库表中的数据集先排序好
这样搜起来就会更快些但不合理的排序找起来就更慢了你建的索引: 1.你把学习的书 和A++小说分类放在书柜上-----------找小说或找学习的比较方便(快)
你建的索引: 2.你从贵到便宜将学习的书和A++小说放在书柜上-----找最贵的和最便宜的比较方便(快)
你建的索引: 3.你从厚到薄将学习的书和A++小说放在书柜上-------找最厚的和最薄的比较方便(快)你建立索引1后 但现在又要去找最贵的和最便宜的 那就不怎么方便 一本一本看
然后表外键是TID和记录这些分类表(Web_T)关联
那我该不该用索引呢?
假设有很多数据
该怎么用呢
用Request.QueryString["TID"]接收
然后用存储过程分页,分出TID,例如TID=1就是asp.net,2就是C#
这样有必要建索引不?该怎么建呢?
然后sql就会对TID自动排序?例如,TID=1的分在一块,2的分在一块
如果查找的是2就直接查找2的那一块,不用在重头开始找起呢?
当我在写代码的时候,要建立一个Web列表页,
列表页如果接收过来Request.QueryString["TID"]就用存储过程分页,
分页写到的where语句是where TID='"+Request.QueryString["TID"]+"' and Passed=1
要这样写
这样有必要建立索引不?
该怎么建立呢?
因为ID设置为主键且自增长了,这样就不能在建clustered索引了
建立unique索引,可是CID有好多条,好多重复也建不了unique索引了
- -!
网上找的是
CREATE INDEX CIDS ON New(CID)
这样创建后就可以了吗?
怎么用它呢?
而不用整本书都翻完,类似你不用把表中的数据都找完,才找到你要的数据建立好后,如果查询语句SELECT CID FROM CIDS 这样的话,它会选择索引扫描,不用把整个表的数据都去扫
不过你也可以强制指定索引,所以语句就会按你的索引去找,(除非你确定这样能提高速度)
数据库引擎会自动去选择哪个索引找出最优的执行计划,但不总是这样,也会产生不好的执行计划,太多了,一下说不清楚
譬如 select top 2 colum1,colum2 from table,这个情况下,直接从表中按物理顺序读头两条(或最后两条数据).此时,就算建了索引,用处也不大,如果利用上了索引,速度不快反慢数据库服务器还是有一定的智能的,它会比较几种可用的方案,然后估算出何种方案速度最快(估算不一定都准确,往往与实际会有出入)
然后服务器就会采用估算最佳方案去执行还是用字典来打比方:
字典中有好几万个汉字,如果让你快速查找到"优"字,你可能会有"偏旁"查字法,先找单人旁,然后再找到"优"字所在的页码,再翻到这个页码,这个速度肯定要你比从字典第一页逐页查找快.但是,如果字典中一共只有不到10个汉字,一页就够了,其中有一个"优"字,再让你找到这个优字,你还会用部首查字法吗?我想你会直接到唯一的一页中找到它.在这种情况下,数据库一般会放弃利用索引,而是直接扫描表.
如果数据库不恰当地非要去用索引,那就会出现你所说的用上索引速度反而不快了.