哪些情况下不应该使用索引(什么不能使用索引运算)

投稿- 2023-08-04 06:55:44

mysql 加索引 说一个在工作中遇到的mysql索引失效的问题

style="text-indent:2em;">各位老铁们,大家好,今天由我来为大家分享哪些情况下不应该使用索引,以及不建议创建索引的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

本文目录

  1. 哪些情况下不应该使用索引
  2. oracle建索引会锁表吗
  3. 创建数据库索引所花费的时间与由索引所减少的数据库查询时间相比那个更长
  4. 建立索引时要考虑哪些不利因素

哪些情况下不应该使用索引

1)数据唯一性差的字段不要使用索引

比如性别,只有两种可能数据。意味着索引的二叉树级别少,多是平级。这样的二叉树查找无异于全表扫描。

2)频繁更新的字段不要使用索引

比如logincount登录次数,频繁变化导致索引也频繁变化,增大数据库工作量,降低效率。

3)字段不在where语句出现时不要添加索引

只有在where语句出现,mysql才会去使用索引

4)数据量少的表不要使用索引

使用了改善也不大

另外。如果mysql估计使用全表扫描要比使用索引快,则不会使用索引。

oracle建索引会锁表吗

应该是没有默认索引,建立主键或者索引之后,oracle会在单独的一块区域建立索引的数据,索引的数据和表的数据是分别存放的,不是在一起的,索引的数据就对应表的主键或者其他索引,例如,你的表里有100条数据,并且有主键,那么在索引的区域就会有100条数据和它们对应,并且由于是主键数据,所以每条数据都是唯一的,不会重复,数据检索的时候,先去检索索引区,因为那里的数据比较少,所以速度很快。

但如果没有主键,一个表中可以有重复的数据,所以系统也不知道按照什么样的规则自动建索引,就不会有默认的索引,oracle每次查询都会进行全表查询。

创建数据库索引所花费的时间与由索引所减少的数据库查询时间相比那个更长

创建数据库索引所花费的时间不是一次性的?一般不建议建立索引,也就是会影响速度的是下面几种情况的1、修改的数据远大于查询的数据的情况2、查询中很少用到的列3、只有很少数据值的列

建立索引时要考虑哪些不利因素

建立索引时要考虑的不利因素有:

1、创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加;

2、索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大,如果非聚集索引很多,一旦聚集索引改变,那么所有非聚集索引都会跟着变;

3、当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,一旦一个数据改变,并且改变的列比较多,可能会引起好几个索引跟着改变,这样就降低了数据的维护速度。

4、每个索引都有统计信息,索引越多统计信息越多,过多索引会导致优化器优化过程需要评估的组合增多。创建索引的时候,应该仔细考虑在哪些列上可以创建索引,在哪些列上不能创建索引。

如果你还想了解更多这方面的信息,记得收藏关注本站。

索引优化与查询优化
  • 声明:本文内容来自互联网不代表本站观点,转载请注明出处:bk.66688897.com/1/81601.html
上一篇:咸芝麻薄饼烤箱做法(芝麻薄饼的做法烤箱)
下一篇:哪个相机可以拍小视频(哪个相机可以拍小视频呢)
相关文章
返回顶部小火箭