数据库索引

一、索引简介

索引在mysql中也叫做"键",是存储引擎用于快速找到记录的一种数据结构。索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要;

索引优化应该是对查询性能优化最有效的手段了;

索引能轻易将查询性能提高好几个数量级;

索引相当于字典的音序表,如果要查某个生字,如果不使用音序表,则需要从几百页中一个个查找,效率太低。

索引特点:创建与维护索引会消耗很多时间与磁盘空间,但查询速度大大提高;

二、索引语法

--创建表时
--语法:
CREATE TABLE 表名 (
字段名1 数据类型 [完整性约束条件…],
字段名2 数据类型 [完整性约束条件…],
[UNIQUE | FULLTEXT | SPATIAL ] INDEX | KEY
[索引名] (字段名[(长度)] [ASC |DESC])
); -------------------------------- --创建普通索引示例: CREATE TABLE emp1 (
id INT,
name VARCHAR(30) ,
resume VARCHAR(50),
INDEX index_emp_name (name)
--KEY index_dept_name (dept_name)
); --创建唯一索引示例: CREATE TABLE emp2 (
id INT,
name VARCHAR(30) ,
bank_num CHAR(18) UNIQUE ,
resume VARCHAR(50),
UNIQUE INDEX index_emp_name (name)
); --创建全文索引示例: CREATE TABLE emp3 (
id INT,
name VARCHAR(30) ,
resume VARCHAR(50),
FULLTEXT INDEX index_resume (resume)
); --创建多列索引示例: CREATE TABLE emp4 (
id INT,
name VARCHAR(30) ,
resume VARCHAR(50),
INDEX index_name_resume (name, resume)
); --------------------------------- ---添加索引 ---CREATE在已存在的表上创建索引
CREATE [UNIQUE | FULLTEXT | SPATIAL ] INDEX 索引名
ON 表名 (字段名[(长度)] [ASC |DESC]) ; ---ALTER TABLE在已存在的表上创建索引 ALTER TABLE 表名 ADD [UNIQUE | FULLTEXT | SPATIAL ] INDEX
索引名 (字段名[(长度)] [ASC |DESC]) ; CREATE INDEX index_emp_name on emp1(name);
ALTER TABLE emp2 ADD UNIQUE INDEX index_bank_num(band_num); -- 删除索引 语法:DROP INDEX 索引名 on 表名 DROP INDEX index_emp_name on emp1;
DROP INDEX bank_num on emp2;

三、索引测试

--创建表
create table Indexdb.t1(id int,name varchar(20)); --存储过程 delimiter $$
create procedure autoinsert()
BEGIN
declare i int default 1;
while(i<500000)do
insert into Indexdb.t1 values(i,'yuan');
set i=i+1;
end while;
END$$ delimiter ; --调用函数
call autoinsert(); -- 花费时间比较:
-- 创建索引前
select * from Indexdb.t1 where id=300000;--0.32s
-- 添加索引
create index index_id on Indexdb.t1(id);
-- 创建索引后
select * from Indexdb.t1 where id=300000;--0.00s

最新文章

  1. Entity Framework 6 Recipes 2nd Edition(9-5)译-&gt;删除一个断开的实体
  2. PL/SQL 如何查看当前连接信息以及SQL PLUS如何指定IP地址
  3. Starling项目启动时报错This application is not correctly embedded (wrong wmode value)
  4. JDK配置
  5. 关于 Redis 访问安全性的问题
  6. JS实现剪切板添加网站版权、来源
  7. JavaScript parser
  8. Unity之屏幕画线
  9. android控件的属性
  10. [AngularJS] Reusable directive, require from parent controller
  11. Ajax请求过程中显示“进度”的简单实现
  12. 标准差(standard deviation)和标准误差(standard error)你能解释清楚吗?
  13. 几个不错的编辑器BoneEdit
  14. 搜索——[HAOI2012]添加号
  15. 第三篇:数据仓库系统的实现与使用(含OLAP重点讲解)
  16. C语言学习笔记--枚举&amp;结构体
  17. C++匈牙利命名法
  18. servlet上传与下载
  19. 修改rpm中的文件重新打包
  20. mongoDB 数据库操作

热门文章

  1. MongonDB
  2. HNOI2015总结
  3. Spring域属性和代理模式
  4. xargs 命令教程
  5. 如何保证MQ的顺序性?比如Kafka
  6. scrapy之CrawlSpiders
  7. Holmos框架
  8. [转]sql server 分页
  9. 研发团队是该制定OKR还是KPI?
  10. pan wutong团队隐私协议