mysql 整理 -- 索引

一、在 Command Line Client 中进行复制

    在命令窗口Ctrl+c是不起作用的,只能靠右击弹出的菜单中的功能。可以这样做:

   右击 选择 “标记” ,然后用鼠标拖动要复制的内容,  然后在合适的位置右击  选择“复制”


索引

一、索引的原理

    对要查询的字段建立索引其实就是把该字段按照一定的方式排序;建立的索引只对该字段有用,如果查询的字段改变,那么这个索引也就无效了。索引太多会降低查询的速度。


二、索引的优缺点:(摘自:http://blog.csdn.net/pang040328/article/details/4164874

优点:索引可以大大提高系统的性能。

    1. 通过创建唯一索引,可以保证数据库的每一行数据的唯一性。

    2. 可以大大加快数据的检索速度,这也是创建索引的主要原因。

    3. 可以加速表和表之间的链接,特别是在实现数据的参考完整性方面特别有意义。

    4. 使用分组和排序子句进行数据检索中,同样可以显著减少查询中分组和排序的时间。

    5. 通过使用索引,可以在查询过程中,使用优化隐藏器,提高系统的性能。


   也许会有人要问:增加索引有如此多的优点,为什么不对表中的每一个列创建一个索引呢?这种想法固然有其合理性,然而也有其片面性。虽        然,索引有许多优点, 但是,为表中的每一个列都增加索引,是非常不明智的。这是因为,增加索引也有许多不利的一个方面。

缺点:

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

    2. 索引需要占用物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。

    3. 当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这就降低了数据的维护速度。

 

        索引是建立在数据库表中的某些列的上面。因此,在创建索引的时候,应该仔细考虑在哪些列上可以创建索引,在哪些列上不能创建索引。一般       来说,应该在这些列 上创建索引,例如:

 三、适合建索引的列

       在经常需要搜索的列上,可以加快搜索的速度;

      1. 在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度。

      2. 在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的。

      3. 在需要经常排序的列上创建索引,因为索引已经排好序,这样查询可以利用索引的排序,加快排序查询时间。

      4. 在经常使用在WHERE 子句中的列上创建索引,加快条件的判断速度。

    

四、 不适合建索引的列

      1. 在查询中很少使用或参考的列 上不适合建索引。

          因为,既然这些列很少使用,因此有无索引并不能提高查询速度。相反,由于增加了索引,反而降低了系统的维护速度和增由于大了空间需求。

      2. 只有很少数值的列 也不适合建立索引。

          因为,由于这些列的取值很少,在查询结果中,结果集的数据行占了表中数据行的很大比例。增加索引并不能明显加快检索速度。

     3. 定义为text、image、bit型的列不适合建索引。

        因为,这些列数据量要么相当大,要么取值很少。

    4. 当修改性能远远大于检索性能时,不应该建索引。

        因为,修改性能和检索性能时相互矛盾的。当 增加索引时,会提高检索性能,但是会降低修改性能。当减少索引时,会提高修改性能,降低检索        性能。因此,当修改性能远远大于检索性能时,不应该创建索引。


五、 主键约束或唯一性键约束创建的索引的优先级高于使用create index 语句创建的索引。

猜你喜欢

转载自blog.csdn.net/springsunss/article/details/52062007