当前位置: 首页 > news >正文

MySQL索引的使用方式和缺点

一,create

CREATE INDEX可对表增加普通索引或UNIQUE索引。

CREATE INDEX index_name ON table_name (column_list)
CREATE UNIQUE INDEX index_name ON table_name (column_list)

1)建立多重的索引

  CREATE INDEX 表名_字段名1_字段名2 ON 表名 (字段名1,字段名2);

使用explain可查看是否使用索引:SELECT * FROM mytable WHERE category_id=1 AND user_id=2;

想让SELECT * FROM mytable WHERE category_id=1 AND user_id=2 ORDER BY adddate DESC;使用索引

优化方法:EXPLAIN SELECT * FROM mytable WHERE category_id=1 AND user_id=2 ORDER BY category_id DESC,user_id DESC,adddate DESC;

不能用CREATE INDEX语句创建PRIMARY KEY索引。

二、alter

例子:

1.添加PRIMARY KEY(主键索引) 
mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 


2.添加UNIQUE(唯一索引) 
mysql>ALTER TABLE `table_name` ADD UNIQUE ( 
`column` 


3.添加INDEX(普通索引) 
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` ) 


4.添加FULLTEXT(全文索引) 
mysql>ALTER TABLE `table_name` ADD FULLTEXT ( `column`) 


5.添加多列索引 
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )

 

更加详细的方法

 

使用alter table语句来为表中的字段添加索引的基本语法是:
ALTER TABLE <表名> ADD INDEX (<字段>);

mysql> alter table test add index(t_name);
Query OK, 0 rows affected (0.17 sec)
Records: 0  Duplicates: 0  Warnings: 0

三、删除索引

可利用ALTER TABLE或DROP INDEX语句来删除索引。类似于CREATE INDEX语句,DROP INDEX可以在ALTER TABLE内部作为一条语句处理,语法如下。

DROP INDEX index_name ON talbe_name
ALTER TABLE table_name DROP INDEX index_name
ALTER TABLE table_name DROP PRIMARY KEY
 
四、查看索引
mysql> show index from tblname;
mysql> show keys from tblname;
 
索引的缺点:
1、 创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加

2、索引需要占用物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,需要的空间就会更大。

3、当对表中 的数据进行增加、删除、修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。

转载于:https://www.cnblogs.com/chenhaoyu/p/6514844.html

相关文章:

  • PHP在Windows IIS上传的图片无法访问的解决方法
  • LINUX系统安装MYSQL命令
  • Jmeter简单应用7
  • 【转】UNREFERENCED_PARAMETER的作用
  • Bootstrap框架下实现图片切换
  • SpringBoot学习之路:02.第一个程序Hello World及项目结构介绍
  • samba部署和优化
  • OSChina 周日乱弹 ——花季少女突然离开,昨夜他们做了什么?
  • VC++开发(一)——VC++自定义注释
  • 一个典型核心网络故障分析
  • 网站优化简单探讨
  • Maven 编译时复制 resources下的文件到主输出目录
  • 面试STAR法则
  • Comparable和Comparator接口
  • 驼峰法则
  • Android交互
  • js写一个简单的选项卡
  • MySQL数据库运维之数据恢复
  • 创建一种深思熟虑的文化
  • 大数据与云计算学习:数据分析(二)
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 异步
  • 怎么将电脑中的声音录制成WAV格式
  • hi-nginx-1.3.4编译安装
  • # 透过事物看本质的能力怎么培养?
  • ${factoryList }后面有空格不影响
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (4)事件处理——(7)简单事件(Simple events)
  • (SpringBoot)第二章:Spring创建和使用
  • (SpringBoot)第七章:SpringBoot日志文件
  • (二)c52学习之旅-简单了解单片机
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (强烈推荐)移动端音视频从零到上手(下)
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (新)网络工程师考点串讲与真题详解
  • (译) 函数式 JS #1:简介
  • .bat文件调用java类的main方法
  • .gitignore文件设置了忽略但不生效
  • .NET Core 和 .NET Framework 中的 MEF2
  • .Net IOC框架入门之一 Unity
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .NET 分布式技术比较
  • .Net 垃圾回收机制原理(二)
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
  • .net反编译工具
  • .NET面试题(二)
  • .net中生成excel后调整宽度
  • @SentinelResource详解
  • [ 2222 ]http://e.eqxiu.com/s/wJMf15Ku
  • [ IOS ] iOS-控制器View的创建和生命周期
  • [ACM] hdu 1201 18岁生日
  • [ActionScript][AS3]小小笔记