首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

问个sql 主键 索引对数据影响的小疑点

2014-01-25 
问个sql 主键 索引对数据影响的小问题有个表是没有主键和索引,查询时使用的查询条件也只是“内容”这个字段。

问个sql 主键 索引对数据影响的小问题
有个表是没有主键和索引,查询时使用的查询条件也只是“内容”这个字段。

表如:
code title content
 100  ttt   ccc
 100  ttt   cccc
 101  tt2   cccc2

1.为什么说每个表都要有索引和主键;问下如果我要加主键和索引理论上有没什么影响。
2.select * from newsKind where code='100' order by code desc;请问这个语句的order by用的code来排序算不算也是索引。
[解决办法]
1.为什么说每个表都要有索引和主键;问下如果我要加主键和索引理论上有没什么影响。
不是“都要”,主键能保证数据的唯一性,而索引能给性能带来好处。加主键的话要保证列没有重复数据,加索引的话没有什么限制
2.select * from newsKind where code='100' order by code desc;请问这个语句的order by用的code来排序算不算也是索引。
如果code有索引,也会借用索引
[解决办法]
sqlserver的主键默认就带有聚集索引,聚集索引能借用预排序功能,在某些情景下能减少order by的开销。这句:select * from newsKind where code='100' order by code desc; 如果code上有聚集索引,能减少order by的开销,但是如果非必要的话,不要用select *
[解决办法]
另外,如何建索引,要看你的查询是如何操作表中的数据,就拿select code from newsKind where code='100' order by code desc;这个脚本,可以在code上建聚集索引,但是不一定是主键。注意我把*改成code了
[解决办法]
加了查询快啊。
索引主要是为了效率,不加也可以啊。只要你能受得了查询慢。
[解决办法]
加了不一定快,还要看数据的选择度
[解决办法]

1、主键是为了防止数据的重复,而索引是为什么加快查询的速度。

另外,索引又分为:聚集索引 和 非聚集索引。

为了提高性能,建议创建:聚集索引,这样就使得 数据就是这个聚集索引。
[解决办法]

2.你的查询:这个语句的order by用的code来排序,只是排序,不是索引。
[解决办法]

引用:
Quote: 引用:

加了不一定快,还要看数据的选择度


如果我加了一个id设为主键,但实际上查询时从来没用过这个主键id, 主键自身带有索引,那这个表算得上优化吗
这个不算优化,但是算得上“管理”
[解决办法]
引用:
Quote: 引用:

加了不一定快,还要看数据的选择度


如果我加了一个id设为主键,但实际上查询时从来没用过这个主键id, 主键自身带有索引,那这个表算得上优化吗


那就意义不是很大了。
[解决办法]
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

加了不一定快,还要看数据的选择度


如果我加了一个id设为主键,但实际上查询时从来没用过这个主键id, 主键自身带有索引,那这个表算得上优化吗


那就意义不是很大了。

如果我这个表最多的数据量不会超过100条,那我有没必要去弄这个索引,如果弄了影响大不大。


可以不建立索引,因为数据量比较小。

如果建了索引,也不会有太大的影响的。
[解决办法]
刚帮人搞了个几千万数据的贴,不加索引10几分钟都没出来,所以根据数据量和数据量的发展趋势考虑一下索引吧
[解决办法]
可以等数据量大了,再增加索引。
[解决办法]
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

加了不一定快,还要看数据的选择度


如果我加了一个id设为主键,但实际上查询时从来没用过这个主键id, 主键自身带有索引,那这个表算得上优化吗


那就意义不是很大了。

如果我这个表最多的数据量不会超过100条,那我有没必要去弄这个索引,如果弄了影响大不大。
100条爱怎么搞怎么搞,没必要加索引
[解决办法]
即使笛卡儿积也是秒杀
[解决办法]
刚刚写了一大堆关于你这个如何使用索引的,刚要发,看看上面的回复;我就放弃了。
感情哥们就100条数据啊....你再多100条也行啊。
没必要用索引啦。
引用老黄的话:“100条爱怎么搞怎么搞”
[解决办法]
引用:
Quote: 引用:

刚刚写了一大堆关于你这个如何使用索引的,刚要发,看看上面的回复;我就放弃了。
感情哥们就100条数据啊....你再多100条也行啊。
没必要用索引啦。
引用老黄的话:“100条爱怎么搞怎么搞”

100条我只是在假设
基于假设来建索引
[解决办法]
一般几千条数据的时候,我都不建索引
[解决办法]
感觉不慢就不用建索引~~~
[解决办法]
数据库是存放和管理数据的一个地方,对于小数据量,比如才100条数据,也就是说一个图书馆有100本书,那么即使你在图书馆走一遍,只要眼力好,很快就能找到你要的书。数据库也一样,当今的硬件足够数据库在小于1毫秒的时间内在100条数据里找到你要的数据。但是当数据库的规模超过1G甚至1T,幻想一下,当你在国家图书馆找书时,最少十几万的书,你估计一天都看不完书名,对此,很早之前图书管理已经有一个规定,对书名及相关信息做一个目录,并把书按照类别存放在不同的书架上,方便查找和管理(比如还书)。
在你进入图书馆之后,只需要先到图书馆楼层图中,就可以看到你想要的书在哪层,甚至哪个书架上,然后直接走去对应的书架找书即可。数据库的索引也如此,通过“目录”,也就是索引,能够使得优化器快速定位所需数据,并返回数据。即使在大量数据的情况下,合理的索引性能都依旧很稳定。借助索引,能够快速找到用户所要的信息并返回给用户。同时通过索引,能够按照系统所需的存储方式存储数据。这就是为什么要存在索引。

------解决方案--------------------


其实数据量不大,可以先不建索引,等数据量大了再建立索引。

建了索引,就像是书中的目录一下,特别是书后的索引一样,

比如你要查找index这个单词,出现在书中的位置,那么,通过这个索引,就能找到,比如在第121,第200,第300页中有这个index单词,

这样就不用从书的第一页开始翻,到最后一页,这样显然就效率比较差,所以索引能提高查询的性能。
[解决办法]

引用:
Quote: 引用:

其实数据量不大,可以先不建索引,等数据量大了再建立索引。

建了索引,就像是书中的目录一下,特别是书后的索引一样,

比如你要查找index这个单词,出现在书中的位置,那么,通过这个索引,就能找到,比如在第121,第200,第300页中有这个index单词,

这样就不用从书的第一页开始翻,到最后一页,这样显然就效率比较差,所以索引能提高查询的性能。

恩恩


比如,我原来的公司,业务表有1.5亿条数据,这个时候建立索引就非常有必要,建了索引后,查询只需要10秒以内,但是如果不加索引,1个小时也不一定能返回结果集。
[解决办法]
引用:
这索引我创建了一个那数据库是怎么调用的,如何我创建两个索引又会怎样。


这个索引使系统自动调用的、自动维护的。

创建两个索引也一样。
[解决办法]
一个表至少要有一个索引

热点排行