发表于: 2017-03-29 14:10:45

2 1373



title: 2017年3月29日 日报
今天太晚了, 明天和大家分享一个排版神器

一、今日完成的任务

9. 建立索引

9.1 什么是索引?

为某列建立索引后, 就是把某列单独拿出来、然后在此列中的值同对应的记录间建立指针, 并将此列排序. 这样, 以后再进行查询操作时, 将索引取出, 直接查询索引, 然后再找到对应的记录. 不建立索引的话, 则是将全部记录取出, 再按照条件一一筛选. 二者高下立判.
此过程可类比先通过目录查页码, 然后找书中的内容.

9.2 如何创建索引?

索引分为单列索引(主键索引、唯一索引、普通索引)和多列索引.
单列索引的创建
方法一: 使用create index创建普通索引或唯一索引.

CREATE INDEX index_name ON table_name(column_name); 
CREATE UNIQUE INDEX index_name ON table_name(column_name);

方法二: 使用alter table创建普通索引、唯一索引或主键索引.

ALTER TABLE table_name ADD INDEX index_name(column_name); 
ALTER TABLE table_name ADD UNIQUE index_name(column_name); 
ALTER TABLE table_name ADD PRIMARY KEY;

多列索引的创建

/*与单列索引类似. */
CREATE INDEX index_name ON table_name(column1, column2, ...);
ALTER TABLE table_name ADD INDEX index_name(column1, column2, ...);
9.2.1 解决: [如何查看已建立的索引? ]
SHOW INDEX FROM table_name;
9.2.2 解决: [如何删除已建立的索引? ]
DROP INDEX index_name ON table_name; 
// 删除主键索引. 
ALTER TABLE table_name DROP PRIMARY KEY;

9.3 还应该给那些列建立索引?

在网上查找到一些索引的建立原则:

  1. 在经常用作过滤器的字段上建立索引;
  2. 在SQL语句中经常进行GROUP BY、ORDER BY的字段上建立索引
  3. 在不同值较少的字段上不必要建立索引,如性别字段;
  4. 对于经常存取的列避免建立索引;
  5. 用于联接的列(主健/外健)上建立索引;

所以, 我想在学员id上建立索引, 可之前已经建立过主键索引了…

10. 插入测试数据, 看看索引对查询效率的影响.

插入测试数据.

INSERT INTO student VALUES(null, '关羽', '加里敦', 26, '知乎', 230230889),
    (null, '刘备', '加里敦', 26, '知乎', 121859348249),
    (null, '曹操', 'MIT', 28, '知乎', 123121412313),
    (null, '诸葛亮', '中科大', 17, '知乎', 43940132041),
    (null, '孙权', '加州大学', 29, '知乎', 81741034108),
    (null, '徐晃', 'MIT', 28, '知乎', 3418730498341),
    (null, '夏侯惇', 'MIT', 28, '知乎', 384172394881),
    (null, '周瑜', '加州大学', 29, '知乎', 3748570285),
    (null, '庞统', '中科大', 26, '知乎', 198332320);

分别在有无”name”索引的情况下, 测试查询速度.

SELECT * FROM student WHERE stu_name IN('夏侯惇', '孙权', '诸葛亮');

发现都是0.00秒…可能是查询的数据太少了吧…

10.1 解决: [mysql进行插入操作时, 对自增的列如何处理? ]

对应的位置用”null”代替. 如:

INSERT INTO student VALUES(null, '张飞', '加里敦', 26, '知乎', 198332320);

图一

10.2 问题: [如何在mysql中实现自动插入大量数据? ]

上网浏览了一些办法, 有的是通过mysql的函数及存储过程实现的、有的是使用shell脚本实现的. 看了好久依然不懂, 没能实现…
先放下吧, 等学习再深入点再弄这些东西吧.

11. 关于mysql的若干思考

其实也没有什么可思考的, 基本的增删改查都会了, 可稍微复杂点的就不行了…
像一些高级查询、函数、存储过程之类的就不懂了, 等以后用到了再慢慢看吧!

12. 下载并配置Java开发环境

之前配置过了, 这里略过.
至于JDK和JRE的区别, 个人理解:

  • JDK包含JRE;
  • JDK(Java Development Kit), Java开发工具包, 是进行Java开发的最基本环境 ;
  • JRE(Java Runtime Envirenment), Java运行环境, 顾名思义, 它是运行Java程序的最基本环境.

    14. 下载IDE, 并配置Maven.

    之前用过Eclipse, 这里想尝试一下IntelliJ IDEA.

    14.1 Maven有什么用?

    Maven可以帮忙解决jar包依赖问题.
    举个例子, 进行S2SH项目开发时, 通常情况下我们需要去网上寻找并下载所需要的jar包, 然后导入项目; 使用Maven后, 在pom中把依赖一配置, Maven插件会自动从中央仓库下载所需jar包.
    暂时先理解这么深吧!

    14.2 在IDEA中配置Maven

    (待续…)

    二、明天计划完成的任务

    今天上午没学习, 下午又耽误了不少时间, 所以昨天定的计划没有完成, 羞愧! 明天定要完成任务1.14 ~ 1.19!

    三、遇到的问题

    如何在mysql中实现自动插入大量数据?

    四、收获

  • 创建索引、删除索引、查看已创建的索引;
  • Maven的用处.
    看似花了不少时间, 学到的东西却很少…在索引那一块的笔记格式纠结了太久, 然后在[如何在mysql中实现自动插入大量数据? ]也消耗了不少时间.

返回列表 返回列表
评论

    分享到