发表于: 2018-04-01 06:55:54

1 435


今天完成的事情:

         步骤8(导出sql表:右击表名,导出向导,选择SQL脚本文件,选择导出路径,选择全部栏位,勾选包含标题,开始收集导出数据,开始导出)(删除记录:delete from student where Id=1)(恢复记录:表右击运行SQL文件,点击开始)

       步骤9,1.主键本身就是索引+不允许空值,不需要另加;2.外键指向另一个表的主键,需要加索引,在MYSQL上会自动加上索引,不需要特地设置;3.学号频繁作为查询条件的字段应该创建索引应该加;

        步骤10(alter table student drop index Name_column,加索引。)

加索引以后

(create index Name_column on student (Name))

不加索引以后

加索引以后,效率相对较快。

11.暂时对数据库理解还不够深,等完成任务一再回来补上

明天计划的事情:步骤12-16
遇到的问题:对数据库理解表深,导致很难理解一部分搜索到的内容
收获:

索引类型:

普通索引:最基本的索引,没有任何限制
唯一索引:与"普通索引"类似,不同的就是:索引列的值必须唯一,但允许有空值。
主键索引:它 是一种特殊的唯一索引,不允许有空值。 
全文索引:仅可用于 MyISAM 表,针对较大的数据,生成全文索引很耗时耗空间。作用于CHARVARCHARTEXT数据类型的列。
组合索引:为了更多的提高mysql效率可建立组合索引,遵循最左前缀原则。创建复合索引

7、哪些情况需要创建索引

    主键自动建立唯一索引

    频繁作为查询条件的字段应该创建索引

    查询中与其他表关联的字段,外键关系建立索引

    频繁更新的字段不适合建立索引,因为每次更新不单单是更新了记录还会更新索引

    WHERE条件里用不到的字段不创建索引

    单键/组合索引的选择问题,(在高并发下倾向创建组合索引)(涉及到锁的概念)

    查询中排序的字段,排序的字段若通过索引去访问将大大提高排序速度

    查询中统计或者分组字段


     索引的部分内容涉及到结构,为了帮助理解在搜索数据库的原理,知道了时间复杂度的概念0(n),n为数据的大小。索引的实质就是降低时间复杂度。知道了3种数据结构:

阵列(列未加索引前就是以表的结构保存的,查找一个数据的时间复杂度是O(n)),加索引以后就是在表的基础上加了一个B+树,搜索时不再直接从表中查询,而且通过B+树,按O(log(N))的时间复杂度来得到指向表中数据的行地址,缺点就是在数据库多了一个表,在更改记录时,必然导致效率变慢,所以数据比较小的和需要频繁更新的列不需要加上索引。而哈希表是通过找到一个函数运算,利用关键字使得获得元素尽量小的哈希桶,好的哈希表能够使时间复杂度O(1)。





返回列表 返回列表
评论

    分享到