六、mysql索引

注意:创建索引的基本原则:

1、索引要建在使用较多的字段上

2、尽量不要在相同值较多的字段上建立索引,比如姓名

3、对于经常进行数据存取的字段不要建立索引

4、对于有外键引用的表,在主键和外键上建立索引

索引类型:

1、普通索引

mysql> create index ipaddr_idx(索引名) on accesslog(ipaddr); \\添加索引 (accesslog表 在test数据库中)

mysql> alter table accesslog add index ipaddr_idx (ipaddr); \\添加索引

mysql> create table student(id int primary key,name varchar(30),sex enum('man','woman'),score float(4,1)

,addr varchar(60),index addr_idx (addr)); \\添加索引

mysql> drop index ipaddr_idx on accesslog;  \\删除索引

练习:从weblog表中查找ip地址为192.168.20.171的所有行,观察创建索引前和创建索引后的区别

mysql> select * from accesslog where ipaddr='192.168.20.171';

mysql> create index ipaddr_idx on accesslog(ipaddr);

mysql> select * from accesslog where ipaddr='192.168.20.171';

由此可知,建立索引后 , 提高了查询速度

练习:观察下列查询在没有建立索引前所使用的时间和索引后所使用的时间,建立索引后下列哪些查询没有使用索引。

(1)在employees表中查询first_name以Mary开头的所有员工

(2)在employees表中查询first_name包含mar字符的员工

(3)在employees表中查询last_name以He开头的员工

(4)在employees表中查询last_name包含oo字符的员工

(1)mysql> select * from employees where first_name  regexp '^Mary';

> select * from employees where first_name  like 'Mary%';      使用了索引。

mysql> create   index flname_idx on employees (first_name,last_name);

mysql> explain select * from employees where first_name  like 'Mary%'\G; 查看是否使用了索引。

(2)mysql> select * from employees where first_name regexp 'mar';

select * from employees where first_name  like '%Mary%';   没有使用索引。

(3)mysql> select * from employees where last_name regexp '^He';   没有

(4)mysql> select * from employees where last_name regexp 'oo';   没有

mysql> select * from employees where match(first_name,last_name) against('Mary');

2、唯一索引 (字段值必须唯一,但允许有空值)

mysql> create unique index id_idx on weblog(id);

3、全文索引(用于在char,varchar,text等文本类型的字段中)

mysql> create fulltext index flname_idx on employees(first_name,last_name);

4、聚集索引

对于innodb存储引擎

如果表里面包含有主键,直接使用主键做聚集索引

如果没有主键,则将第一个包含not null属性的unique index列作为聚集索引

如果前两个条件都不满足,则mysql会自动增加一个autoincrement的列作为聚集索引

5、空间索引

索引使用总结:

(1)索引一般在,<=,>=,between,in以及某些情况下的like等操作符上才能使用

(2)如果使用like,则%或_不能位于开头

(3)如果使用多列索引,则第一列必须包含匹配的条件

(4)如果在列上使用函数则不能使用索引

索引的缺点:

创建索引会占用磁盘空间,尤其是表很大且创建索引的字段值比较多且内容比较长的话更是如此

对于写入操作,如insert、update、delete等操作,索引会降低它们的速度

mysql数据库创建快递_Mysql索引相关推荐

  1. java代码内创建mysql索引_Java Mysql数据库创建视图、索引、备份和恢复

    #使用视图获取多表中的数据DROP VIEW IF EXISTS `view_result`; CREATE VIEW `view_result` AS SELECT s.`studentName` ...

  2. Java Mysql数据库创建视图、索引、备份和恢复

    #使用视图获取多表中的数据DROP VIEW IF EXISTS `view_result`; CREATE VIEW `view_result` AS  SELECT s.`studentName` ...

  3. 4.mysql数据库创建,表中创建模具模板脚本,mysql_SQL99标准连接查询(恩,外部连接,全外连接,交叉连接)...

     mysql数据库创建,表创建模等模板脚本 -- 用root用户登录系统,运行脚本 -- 创建数据库 create database mydb61 character set utf8 ; -- ...

  4. 4.mysql数据库创建,表创建模等模板脚本,mysql_SQL99标准的连接查询(内连接,外连接,满外连接,交叉连接)

     mysql数据库创建,表创建模等模板脚本 --用root用户登录系统,执行脚本 --创建数据库 create database mydb61 character set utf8 ; --选择数 ...

  5. mysql外连接基准表_4.mysql数据库创建,表创建模等模板脚本,mysql_SQL99标准的连接查询(内连接,外连接,满外连接,交叉连接)...

     mysql数据库创建,表创建模等模板脚本 --用root用户登录系统,执行脚本 --创建数据库 create database mydb61 character set utf8 ; --选择数 ...

  6. MySQL数据库的数据类型和索引

    数据库的数据库索引对程序员来说是透明的,意味着数据库建立索引之前和之后,你的SQL语句都可以正常运行,索引的运用只是数据库引擎工作时候的优化手段.但是,这不是意味着数据库索引仅仅是数据库设计和运维者的 ...

  7. R操作MySQL数据库创建表、删除表、增删改查(CRUD)

    R操作MySQL数据库创建表.删除表.增删改查(CRUD) 关系数据中的数据是按照一定范式去存储的.当我们需要非常高级和复杂的Sql查询就可以使用关系数据库的数据资产.不光java和python可以容 ...

  8. MySQL数据库创建用户及授权

    MySQL数据库创建用户及授权 1.创建用户 命令 CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 说明 username:你将创建的用 ...

  9. MySQL数据库创建表报错的解决方案

    MySQL数据库创建表报错的解决方案 参考文章: (1)MySQL数据库创建表报错的解决方案 (2)https://www.cnblogs.com/jili6254/p/8488446.html 备忘 ...

最新文章

  1. java之父求职_Java求职实战之继承和多态
  2. ssh报错:Could not load host key:/etc/ssh/ssh_host_rsa_keyssh_host_ecdsa_keyssh_host_ed25519_key...
  3. oracle ldap 配置,ldap 安装
  4. undefined reference to
  5. leetcode 75 --- sort-colors
  6. oracle sql 查询优化器,基于ORACLE成本优化器的SQL查询优化分析与应用
  7. diff算法_[VUE学习]徒手撸一个虚拟dom+diff算法
  8. android mount --bind挂载目录
  9. lievent源码分析:evbuffer
  10. 华为 “Telnet” 登录设备
  11. C语言使用SQLite3数据库
  12. 微信公众号教程(8)用微信开发模式做欢迎词
  13. 1493:物种大交换开创的世界史
  14. 14443-A 与14443-B区别
  15. 台式计算机进入安全模式蓝屏,电脑进入安全模式时蓝屏怎么解决
  16. No provisioned iOS devices are available with a compatible iOS version.
  17. 如何优化Urchin配置文件每月数据库的磁盘存储空间
  18. 【Linux】制作U-Boot烧写镜像到SD卡的过程(上篇)
  19. stp文件怎么变文件夹_PDPS教程之数模数据格式转换-stp文件怎么打开
  20. 照亮无尽前沿之路:华为正成为科技灯塔的守护者

热门文章

  1. 在Elasticsearch中实现统计异常检测器——第一部分
  2. 后台服务配制以及代码生成[木字楠博客]
  3. 质量品控严管提升 唯品会十重保障打造电商行业正品示范
  4. word自动编号取消
  5. 游戏外挂衍生黑色产业链,代理月入 10 万元
  6. 苹果手机用什么蓝牙耳机好?适合苹果手机的耳机品牌推荐
  7. Autosar Dem模块之Debounce策略
  8. 网站不收录的具体原因-网站收录软件免费
  9. 2016年该如何理财
  10. python 获取当前时间