当前位置: 代码迷 >> Sql Server >> 问个sql 主键 索引对数据影响的小疑点
  详细解决方案

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

热度:431   发布时间:2016-04-24 19:11:58.0
问个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,幻想一下,当你在国家图书馆找书时,最少十几万的书,你估计一天都看不完书名,对此,很早之前图书管理已经有一个规定,对书名及相关信息做一个目录,并把书按照类别存放在不同的书架上,方便查找和管理(比如还书)。
在你进入图书馆之后,只需要先到图书馆楼层图中,就可以看到你想要的书在哪层,甚至哪个书架上,然后直接走去对应的书架找书即可。数据库的索引也如此,通过“目录”,也就是索引,能够使得优化器快速定位所需数据,并返回数据。即使在大量数据的情况下,合理的索引性能都依旧很稳定。借助索引,能够快速找到用户所要的信息并返回给用户。同时通过索引,能够按照系统所需的存储方式存储数据。这就是为什么要存在索引。

------解决方案--------------------
  相关解决方案