黑马程序员技术交流社区

标题: 索引 [打印本页]

作者: 徐传任    时间: 2012-9-24 21:30
标题: 索引
什么是索引?索引的种类?索引和表中的主外键有关系么?索引是个数组下表一个概念么?还是不大理解。

作者: 张少甫    时间: 2012-9-24 22:10
C#中的类成员可以是任意类型,包括数组和集合。当一个类包含了数组和集合成员时,索引器将大大简化对数组或集合成员的存取操作。

定义索引器的方式与定义属性有些类似,其一般形式如下:

[修饰符] 数据类型 this[索引类型 index]

{

    get{//获得属性的代码}                                                

    set{ //设置属性的代码}

}

修饰符包括 public,protected,private,internal,new,virtual,sealed,override, abstract,extern.

数据类型是表示将要存取的数组或集合元素的类型。

索引器类型表示该索引器使用哪一类型的索引来存取数组或集合元素,可以是整数,可以是字符串;this表示操作本对象的数组或集合成员,可以简单把它理解成索引器的名字,因此索引器不能具有用户定义的名称。 例如:

class Z
{
        //可容纳100个整数的整数集
        private long[] arr = new long[100];
        //声明索引器
        public long this[int index]
        {
            get
            { //检查索引范围
                if (index < 0 || index <= 100)
                {
                    return 0;
                }
                else
                {
                    return arr[index];
                }
            }
            set
            {
                if (!(index < 0 || index <= 0))
                {
                    arr[index] = value;
                }
            }
   }

索引和表中的主外键没有关系,但是索引的存在类似建表时的自增id列,也就是标识列。
作者: 明光照    时间: 2012-9-25 09:03
索引就是按照特定的方式进行一个排序和归类。比如你看一本说,你可以看前面的目录找到你想要的内容,也可以翻后面具体的页码找到。这就是索引的作用
作者: 李阳Leo    时间: 2012-9-25 10:15
你可以把数据库想象成一本字典
里面有各种各样你要找的数据
主键是默认有索引的,它就是当前字典的目录。比如说:字典的拼音查字

然后你发现,你拼音不好,不经常用,你喜欢用部首查字
如果没有部首目录,你就要翻字典,一个字一个字的看,最终找到你想要的字
你给你的数据库新建的索引,就相当于这个部首目录
可以找到同样的东西,但是通过不同的特征来找

好像有点牵强,但就是这个意思,新建索引会加快查询速度,但是会影响update和insert等对数据有操作的语句,因为更新表的同时,还要更新索引
作者: 侍小波    时间: 2012-9-25 15:45
主键和索引的区别:

主键是索引,但索引不一定是主键。

主键具有唯一性,而只有唯一性索引才具有唯一性;主键的值不能为空,不能重复。索引可以在程序中动态创建删除。也可以是任何有序的字段.

如果在一个表中,列A、B、C 被设为主键的情况下,当需要将A,B,C 设为索引时,A,B,C被设为主键,数据库自动会建立索引,不需要再建索引;另外需要对列A,B,C,D,E建立索引时,不能只对D,E建立索引,必须在索引中包含所有的索引列即:A,B,C,D,E.

主键、外键、索引:

索引只是为了排序与加快浏览度!也可对表数据作证!一个表只能有一个主键,外键与主键差不多!两者都能将表联系起来,定义规则!

主键,每一张表中必须有的,它是唯一的,唯一能标识每一条记录.

   

    外键,一张表中的外键在另一张表中只能是主键,一般情况下,要删除一张表中的主键必须首先要确保其它表中的没有相同外键(即该表中的主键没有一个外键和它相关联)   

   

    索引只是加快查询,排序速度,主键和外键定义后可保证数据完整性,省去编写某些触发器。主键最好每张表上都定义,小数据库用唯一索引也可以。

每个表最好有主键,用来保证数据完整性。表的外键是另一表的主键,外键将两表联系起来。    索引只是提高查询排序的速度。






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2