1. 在mysql数据库中为字段添加索引,是什么意思,有什么好处,谢谢!!
在mysql数据库中为字段添加索引,意思是对数据库某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页进行排序,它是逻辑指针清单。
索引提供指向存储在表的指定列中的数据值的指针,历竖然后根据指定的排序顺序对这些指针排序。数据库使用索引以找到特定值,然后顺指针找到包含该值的行。这样可以使对应于表的SQL语句执行得更快,可快速访问数据库表中的特定信息。
(1)sql为啥所有字段都建索引扩展阅读:
当现有数据中存在重复的键值时,大多数数据库不允许将新创建的唯一索引与表一起保存。数据库还可能防止添加将在表中创建重复键值的新数据。例如,如果在employee表中职员的姓(lname)上创建了唯一索引,则改含任何两个员工都不能同姓。
对某个列建立UNIQUE索引后,插入新记录时,数据库管核烂笑理系统会自动检查新纪录在该列上是否取了重复值,在CREATETABLE命令中的UNIQE约束将隐式创建UNIQUE索引。
2. SQL语言中“索引”具体什么意思举例说明!有什么用
索引,你去图书馆结过书吧?为了很方便的找到书名,图书馆一般来讲都会把书名按照字母排序制作成卡片,方便阅览者查阅。假如自己去图书架上一本一本的查找,估计一整天都会耗在图书馆了。 这些卡片就是索引。 同理。索引在数据库中也是为了提高查询速度而为某一个或者某几个字段建的“卡片”。索引是数据库应用开发者根据应用的实际情况建立的。 比如假如一个人事管理系统,人名的查询经常会被用到,那么通常会给这个字段建一个索引。
3. SQL 在表中建立索引的作用
索引的作用就在于,为某个字段建立了索引之后,查询这个字段里面的数据的时候,效率更高,也就是快,
比如
create index abc on stu(age);
为stu表的age字段建立了索引,那么查询时,select * from stu where age > 10;
这个时候效率就高,主要体现在where语句,where age > 10 ,将age 作为查询的条件,age又加了索引所以高。
索引使数据库程序无需对整个表进行扫描,就可以在其中找到所需数据,也就是当进行查询时,系统先搜索索引,从中找到数据的指针,再直接通过指针,直接定位到数据上,所以快。
缺点:
还有就是需要注意的,索引是查的效率高了,但是在表中插入或更新数据时,将有额外的操作来维护索引,所以其他的效率低了,还有占用存储空间,还有不要建立过多的索引,过多索引引起反作用!
你还有啥不明白的?
4. sqlserver2008为什么要创建索引
创建索引可以提升查询速度
5. 数据库为什么要建索引
大部分开发会了解这样的《开发规范》:创建索引要选择区分度高的字段。他们会认为区分度低的字段不适合创建索引或者不适合添加到组合索引里面。但是这样的操作会导致很多慢查。举例来说:
select * from tab where a=1 and b=2;
场景 1
符合 a=1的记录数有 10w 条记录 ,b=2 有 1000 条记录。如果只是创建idx_a(a),sql 请求通过索引idx_a访问 10w 条件记录,然后还要逐一匹配 10w 条记录中的 status,找到符合 b=2的记录。这个动作会导致慢查。如果创建组合索引idx_ab(a,b),sql 请求通过索引idx_ab可以直接定位到 1000 条记录,无需额外的过滤。这样减少访问 9900 条记录的时间,提升查询速度。
场景 2
符合 a=1的有 100 条记录,status=2 有 10 条记录。其实场景 2 因为数据量比较少,直接访问 100 条记录和定位到 10 条记录的时间消耗相差不大,量变不足以引发质变,可以忽略了。
Tips:
创建索引的目的是通过索引尽可能找到匹配 where 条件的行,减少不必要的回表,提高查询效率;
需要辩证地看待区分度比较低的字段在组合索引中的作用。在组合索引的情况下,我们不能只是单纯地看字段的区分度,而是要看符合条件的记录数是多少。符合条件的记录越少,性能越好。
6. sql中索引有什么用
索引用来提高读取数据的速度。
比如你要从一个有一万条记录的表中读取记录,那么如果有索引,他会通过索引定位,找到你要找的记录,速度比一个一个记录的扫描表快很多很多倍。
表的某一个列可以建立索引,也可以是几个列一起建立索引。
索引有主键索引、唯一性索引等。
主键的索引是默认的,不能删除。
你可以先看看数据结构->排序,查找,B-Tree,red-black tree等内容。然后看看数据库系统原理的一些基本概念,不用全看懂。然后下载MySQL数据库,安装,写一些测试程序,往表里写个百八十万条记录,然后查询。。。