mysql添加索引和sql分析
- mysql索引操作
查看索引
show indexes from students; #students为表名 mysql添加索引命令 创建索引
.PRIMARY KEY(主键索引)
mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )
.UNIQUE(唯一索引)
mysql>ALTER TABLE `table_name` ADD UNIQUE (`column` )
.INDEX(普通索引)
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` )
.FULLTEXT(全文索引)
mysql>ALTER TABLE `table_name` ADD FULLTEXT ( `column` )
.多列索引
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` ) 删除索引
DROP INDEX indexname ON table_name; 描述:
PRIMARY, INDEX, UNIQUE 这3种是一类
PRIMARY 主键。 就是 唯一 且 不能为空。
INDEX 索引,普通的
UNIQUE 唯一索引。 不允许有重复。
FULLTEXT 是全文索引,用于在一篇文章中,检索文本信息的。 后记:
我今天用SQLyog工具创建索引,只能创建PRIMARY、UNIQUE、FULLTEXT,请教了DBA,她说可以不选择默认普通索引
例子:
explain SELECT `id`,`last_update_time`,`projectid` FROM yubotuig3_com.v2_article WHERE projectid = and status = ORDER BY last_update_time desc LIMIT ,; explain SELECT COUNT(*) AS tp_count FROM yubotuig3_com.v2_article WHERE projectid = and status = ORDER BY last_update_time desc LIMIT ; 给where条件添加了联合索引,又给order by单独建了索引
ALTER TABLE `v2_article` ADD INDEX index_projectid_status(`projectid`,`status`);
ALTER TABLE `v2_article` ADD INDEX index_last_update_time(`last_update_time`);
- explain分析sql
explain select * from test1 where id=; #会出现:id selecttype table type possible_keys key key_len ref rows extra各列。 其中
type=const表示通过索引一次就找到了;
key=primary的话,表示使用了主键;
type=all,表示为全表扫描;
key=null表示没用到索引。type=ref,因为这时认为是多个匹配行,在联合查询中,一般为REF。 1.使用恰当的索引,是sql的效率倍增,类似sum的函数还有min(),max(),这些都需要在字段上建索引
2.where 后面的函数不能包含表内容,要把函数放在 = 右连 如( update_time >= date_format(date_sub(curdate(), INTERVAL 90 DAY),
'%Y-%m-%d 00:00:00')
and update_time <= date_format(date_sub(curdate(), INTERVAL 90 DAY),
'%Y-%m-%d 23:59:59') )
3.虚表是没有索引的
SELECT
count(1)
FROM
(
SELECT
a.*
FROM
(
SELECT
a.id,
a.customer_id customerId,
a.user_name userName,
a.user_code userCode,
a.type_code typeCode,
a.type_name typeName,
a.coupon_type couponType,
a. STATUS,
a.amount,
a.leverage_ratio leverageRatio,
a.effect_time effectTime,
a.invest_id,
a.use_time useTime,
a.valid_days validDays,
a.create_time createTime,
a.update_time updateTime,
a.invalid_time invalidTime,
a.batch_no batchNo,
c.id adviserId,
c. NAME adviserName
FROM
pccb_coupon a
LEFT JOIN customer_extend b ON a.customer_id = b.id
LEFT JOIN pccb_adviser c ON b.agent_id = c.id
WHERE
1 = 1
) a
WHERE
1 = 1
AND a.adviserName = '江左' #a是虚表,没有索引
) 原文地址:http://database.51cto.com/art/201108/284783.htm
mysql添加索引和sql分析的更多相关文章
- mysql添加索引造成的影响
尽管添加索引可以优化SQL语句的性能,但是添加索引的同时也会带来不小的开销.尤其是在有大量的索引的情况下. mysql添加索引造成的影响如下: 1.DML(数据操作语言)影响,在表上添加缩影会直接影响 ...
- MySQL 添加索引,删除索引及其用法
一.索引的作用 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,所以查询语句的优化显然是重中之重. 在数据 ...
- mysql 添加索引 mysql 创建索引
1.添加PRIMARY KEY(主键索引) mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 2.添加UNIQUE(唯一索引 ...
- mysql 添加索引 mysql 如何创建索引
1.添加PRIMARY KEY(主键索引) mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 2.添加UNIQUE(唯一索引 ...
- mysql 添加索引,ALTER TABLE和CREATE INDEX的区别
nvicat-->mysql表设计-->创建索引. (1)使用ALTER TABLE语句创建索引,其中包括普通索引.UNIQUE索引和PRIMARY KEY索引3种创建索引的格式: PRI ...
- 高性能MySQL之索引深入原理分析
一.背景 我们工作中经常打交道的就是索引,那么到底什么是索引呢?例如,当一个SQL查询比较慢的时候,你可能会说给“某个字段加个索引吧”之类的解决方案. 总的来说索引的出现其实就是为了提高数据查询的效率 ...
- Mysql添加索引及索引的优缺点
一.什么是索引? 索引是对数据库表中的一列或多列值进行排序的一种结构,使用索引可以快速访问数据库表中的特定信息. 二.索引的作用? 索引相当于图书上的目录,可以根据目录上的页码快速找到所需的内容,提高 ...
- mysql添加索引
1.添加PRIMARY KEY(主键索引) mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 2.添加UNIQUE(唯一索 ...
- mysql 添加索引后 在查询的时候是mysql就自动从索引里面查询了。还是查询的时候有单 独的参数查询索引?
MYSQL在创建索引后对索引的使用方式分为两种:1 由数据库的查询优化器自动判断是否使用索引:2 用户可在写SQL语句时强制使用索引 下面就两种索引使用方式进行说明第一种,自动使用索引.数据库在收到查 ...
随机推荐
- 高精度模板 洛谷Luogu P1932 A+B & A-B & A*B & A/B Problem
P1932 A+B & A-B & A*B & A/B Problem 题目背景 这个题目很新颖吧!!! 题目描述 求A.B的和差积商余! 输入输出格式 输入格式: 两个数两行 ...
- nginx的安装和负载均衡例子(RHEL/CentOS7.4)
首先安装RHEL/CentOS7.4 mini ,然后关闭防火墙和 selinux ,更新系统(参看配置linux使用本地yum安装源和Redhat7/CentOS7 关闭防火墙和 selinux两个 ...
- Python笔记(九)_切片、列表生成式
切片 mylist[:3] 取前3位元素,0可省略不写 mylist[-4:] 取后4位元素,0可省略不写 mylist[2:4] 从第2个开始取,取到第4个,但第4个不取,取的元素值为4-2=2 m ...
- Java + selenium 元素定位(2)之By LinkText/PartialLinkText
本章介绍的两种方法都是对于网页上的文字链接的定位操作.根据名字,我们就可以看出来,这两者其实很相似,那么他们的不同在哪里呢. By LinkText()方法,是对一个的网页超链接,我们所需要输入的关键 ...
- 启动项目时出现Error: Node Sass does not yet support your current environment: Windows 64-bit with Unsupported runtime (72)
前几天趁假期重新装了一次系统,重新安装各种配置之后再启动项目的时候就报这个错误 第一反应就是去搜这个错误怎么解决,搜来搜去基本上都是让我重新安装node-sass,但我重装node-sass的时候又出 ...
- python基础实现tcp文件传输
准备工作,实现文件上传需要那些工具呢? socket(传输).open()(打开文件).os(读取文件信息),当然还有辅助类sys和json,下面我们开始吧 import socket,sys imp ...
- selenium,webdriver模仿浏览器访问百度 基础1
这是一种比较好的反反爬技术 #安装:pip install selenium=2.48.0 #显示:pip show selenium #卸载:pip uninstall selenium #模拟用户 ...
- struct和class的相同点与不同点
struct是c语言中常用来定义结构体时使用的 class是c++中用来定义类时所使用的 相同 struct(结构体)和class(类)内均可有不同个数.不同类型的数据 定义时 都必须在前面加上str ...
- 用vim写go代码——vim-go插件
GoImport:导入包 GoImport!:导入远程包 GoImportAs: 导入包并且重命名
- this.$router.push相关的vue-router的导航方法
this.$router.push相关的vue-router的导航方法:https://blog.csdn.net/zeroyulong/article/details/80312750