索引的作用就是快速找出在一个列上用一特定值的行。如果没有索引,MySQL不得不首先以第一条记录开始并然后读完整个表直到它找出相关的行。

索引的类型:

先写一个建表语句:

CREATE TABLE `t_order` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
  `order_no` varchar(20) NOT NULL COMMENT '订单编号',
  `ibank_order_no` varchar(22) DEFAULT NULL COMMENT '银码头订单号',
  `user_id` varchar(16) NOT NULL COMMENT '用户id',
  `member_id` varchar(16) DEFAULT NULL COMMENT '会员id',
  `member_fee` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '会员费',
  `member_type` varchar(10) DEFAULT NULL COMMENT '会员类型',
  `channel` int(4) NOT NULL DEFAULT '0' COMMENT '用户渠道(0 侬要贷 1银码头)',
  `loan_purpose` varchar(36) NOT NULL COMMENT '借款用途',
  `loan_amount` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '借款金额',
  `borrow_time` tinyint(4) NOT NULL DEFAULT '0' COMMENT '借款时长',
  `borrow_periods` tinyint(4) NOT NULL DEFAULT '1' COMMENT '借款期数',
  `real_loan_amount` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '实际借款金额',
  `repay_total_amount` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '应还款总金额',
  `interest` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '利息',
  `annualized_rate` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '年化利率',
  `synthetical_fee` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '综合费用',
  `bank_account` varchar(30) NOT NULL DEFAULT '' COMMENT '打款银行卡号',
  `bank_name` varchar(20) NOT NULL DEFAULT '' COMMENT '打款银行名称',
  `order_status` smallint(6) NOT NULL DEFAULT '10' COMMENT '订单状态 审核中/审核完成/待放款/放款失败/已放款',
  `audit_status` varchar(10) NOT NULL DEFAULT '0' COMMENT '审核结果:1通过0拒绝',
  `who_audit` int(4) NOT NULL DEFAULT '0' COMMENT '机审还是人审(0:机审|1:人审)',
  `audit_reason` varchar(255) NOT NULL DEFAULT '' COMMENT '详细原因码表',
  `loan_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '借款时间',
  `pay_time` datetime DEFAULT NULL COMMENT '放款时间',
  `promise_repayment_time` datetime DEFAULT NULL COMMENT '约定还款时间',
  `fund_code` varchar(10) NOT NULL DEFAULT '' COMMENT '资金渠道',
  `business` varchar(36) NOT NULL DEFAULT 'nyd' COMMENT '会员使用业务范围',
  `test_status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '是否测试申请 0:是;1:不是',
  `delete_flag` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否已删除 0:正常;1:已删除',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  `update_by` varchar(36) NOT NULL DEFAULT 'sys' COMMENT '最后修改人',
  `fail_type` tinyint(2) NOT NULL DEFAULT '0' COMMENT '放款失败类型 0:默认值 1:系统放款失败 2:前端手工取消放款',
  `pay_fail_reason` varchar(300) DEFAULT NULL COMMENT '放款失败原因',
  PRIMARY KEY (`id`),
  UNIQUE KEY `order_no` (`order_no`),
  KEY `idx_user_id` (`user_id`),
  KEY `idx_status` (`order_status`),
  KEY `ix_create_time` (`create_time`),
  KEY `create_time` (`create_time`),
  KEY `update_time` (`update_time`),
  KEY `ibank_order_no` (`ibank_order_no`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='订单信息表';

1.常规索引

index或key,就是所谓的常规索引,也叫作普通索引。

2.  主键索引

主键索引(Primary Key),也简称主键。它可以提高查询效率,并提供唯一性约束。一张表中只能有一个主键。

3.唯一索引

唯一索引(Unique Key),可以提高查询效率,并提供唯一性约束。一张表中可以有多个唯一索引。

4.全文索引

全文索引(Full Text),可以提高全文搜索的查询效率,一般使用Sphinx替代。但Sphinx不支持中文检索,Coreseek是支持中文的全文检索引擎,也称作具有中文分词功能的Sphinx。实际项目中,我们用到的是Coreseek。

5.外键索引

外键索引(Foreign Key),简称外键,它可以提高查询效率,外键会自动和对应的其他表的主键关联。外键的主要作用是保证记录的一致性和完整性。

MySQL数据库---索引的更多相关文章

  1. MySQL数据库索引的4大类型以及相关的索引创建

    以下的文章主要介绍的是MySQL数据库索引类型,其中包括普通索引,唯一索引,主键索引与主键索引,以及对这些索引的实际应用或是创建有一个详细介绍,以下就是文章的主要内容描述. (1)普通索引 这是最基本 ...

  2. (转)MySql数据库索引原理(总结性)

    本文引用文章如链接: http://www.codinglabs.org/html/theory-of-mysql-index.html#more-100 参考书籍:Mysql技术内幕 本文主要是阐述 ...

  3. 知识点:Mysql 数据库索引优化实战(4)

    知识点:Mysql 索引原理完全手册(1) 知识点:Mysql 索引原理完全手册(2) 知识点:Mysql 索引优化实战(3) 知识点:Mysql 数据库索引优化实战(4) 一:插入订单 业务逻辑:插 ...

  4. 为什么MySQL数据库索引选择使用B+树?

    在进一步分析为什么MySQL数据库索引选择使用B+树之前,我相信很多小伙伴对数据结构中的树还是有些许模糊的,因此我们由浅入深一步步探讨树的演进过程,在一步步引出B树以及为什么MySQL数据库索引选择使 ...

  5. MySQL数据库索引之B+树

    一.B+树是什么 B+ 树是一种树型数据结构,通常用于数据库和操作系统的文件系统中.B+ 树的特点是能够保持数据稳定有序,其插入与修改操作拥有较稳定的对数时间复杂度.B+ 树元素自底向上插入,这与二叉 ...

  6. 第二百八十八节,MySQL数据库-索引、limit分页、执行计划、慢日志查询

    MySQL数据库-索引.limit分页.执行计划.慢日志查询 索引,是数据库中专门用于帮助用户快速查询数据的一种数据结构.类似于字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置,然后直接获 ...

  7. MYSQL数据库索引类型及使用

    MYSQL数据库索引类型包括普通索引,唯一索引,主键索引与组合索引,这里对这些索引的做一些简单描述: (1)普通索引 这是最基本的MySQL数据库索引,它没有任何限制.它有以下几种创建方式: 创建索引 ...

  8. MySQL数据库索引的底层原理(二叉树、平衡二叉树、B-Tree、B+Tree)

    1.MySQL数据库索引的底层原理 https://mp.weixin.qq.com/s/zA9KvCkkte2mTWTcDv7hUg

  9. MySQL数据库索引常见问题

    笔者看过很多数据库相关方面的面试题,但大多数答案都不太准确,因此决定在自己blog进行一个总结. Q1:数据库有哪些索引?优缺点是什么? 1.B树索引:大多数数据库采用的索引(innoDB采用的是b+ ...

  10. 谈谈MySQL数据库索引

    在分析MySQL数据库索引之前,很多小伙伴对数据结构中的树理解不够深刻.因此我们由浅入深一步步探讨树的演进过程,再一步步引出MySQL数据库索引底层数据结构. 一.二叉树 二叉查找树也称为有序二叉查找 ...

随机推荐

  1. Maven配置及使用总结

    一. 安装Maven 1. Maven官网 http://maven.apache.org/ 2. 本例子下载最新的版本,apache-maven-3.3.9 解压后目录描述: bin 含有maven ...

  2. 微信小程序 笔记

    1.Input 输入控件 <input type='digit' placeholder='0.00'></input> 如果要使用单纯的数字控件,使那么可以将type设置为d ...

  3. Codeforces Round #378 (Div. 2) D. Kostya the Sculptor 分组 + 贪心

    http://codeforces.com/contest/733/problem/D 给定n个长方体,然后每个长方体都能选择任何一个面,去和其他长方体接在一起,也可以自己一个,要求使得新的长方体的最 ...

  4. openstack安装newton版本创建虚拟机(五)

    一.创建网络: 1.在控制节点上创建一个单一扁平网络(名字:flat),网络类型为flat,网络适共享的(share),网络提供者:physnet1,它是和eth0关联起来的 [root@linux- ...

  5. 通过sqlserver sa密码修改windows操作系统密码

    如果你不记得windows管理员的密码了,但知道sqlserver sa用户的密码,可以通过以下方式修改: 进入SQL之后执行以下语句: -- 允许配置高级选项  EXEC sp_configure ...

  6. Spark Mllib里的Mllib基本数据类型(图文详解)

    不多说,直接上干货! Spark Mllib基本数据类型,根据不同的作用和应用场景,分为四种不同的类型 1.Local  vector : 本地向量集,主要向spark提供一组可进行操作的数据集合 2 ...

  7. [WPF自定义控件库]了解如何自定义ItemsControl

    1. 前言 对WPF来说ContentControl和ItemsControl是最重要的两个控件. 顾名思义,ItemsControl表示可用于呈现一组Item的控件.大部分时候我们并不需要自定义It ...

  8. [luogu 1967]货车运输

    货车运输 题目描述 A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情 ...

  9. fileReader 上传图片

    function getImgSrc(target, callback) { if (window.FileReader) { var oPreviewImg = null, oFReader = n ...

  10. 啊哈算法之巧用队列解密QQ号

    简述 本算法摘选自啊哈磊所著的<啊哈!算法>第二章第一节的题目——使用队列来解密举例中按照规则加密的QQ号.文中代码使用C语言编写,博主通过阅读和理解,重新由Java代码实现了一遍,意在深 ...