如题,搜索到的资料定义多为“一、什么是索引?索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置。如果表有1000个记录,通过索引查找记录至少要比顺序扫描记录快100倍。”我不太理解,在我不知道索引的概念之前,搜索时例如 SELECT * from tablename where id = 1 我这样不是以经指定只搜索列 id = 1了吗,数据库中还让字段属性为索引有什么别的功能吗?我真是理解不了,所谓的“如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置”与 where id=1 有何区别?求详细解,奉上96分为谢!

解决方案 »

  1.   

    参考帖子 http://topic.csdn.net/u/20101225/23/39e804c0-91c1-4287-91ec-c2eba0d34dfc.html?37802对于索引,mysql和sqlserver原理是一样的
      

  2.   

    这样理解或许比较容易。有这么一个需求,要你在《新华字典》里找出“熙”,然后把它的解释读出来。
    可以有多种办法。
    1:一页页的翻,一个个字的比较,直到找到“熙”。
    2:从目录找,找X开头的,然后再找XI开头的。你觉得哪种方法效率高呢??
    1就是全字典扫描。2就是索引扫描。
      

  3.   

    明白了,谢谢各位,尤其谢谢1楼的朋友,您给的地址我认真阅读了几次,受益颇深。我以前理解,只要 where id=1 了,那么查询时的时候也就只访问id这一列,自动忽略id列以外的数据了,现在看来是还要从所有数据中找,直到id=1 ,而不是直接从id列中找等于1.。。