索引( index )

索引在庞大的数据库上最能体现出作用,所谓索引就是根据需求将指定的列提取出来做索引表,可以显著提高在查找数据方面的速度。

在索引的前提下还可以指定索引值是否唯一,索引值是单列或是多列索引。

 

根据索引类型,索引分为:

  普通索引:

name,只能帮助查找
唯一索引:
name,只能帮助查找,内容不允许重复,可以为null,但也限制唯一。
主键索引:
name,只能帮助查找,内容不允许重复,不允许null,一张表只能有一个主键,但也可以通过unique进行组合
组合索引:
多列共同组成索引,可以有如下模式,1 是不约束的就是说不唯一,2是唯一的
普通多列索引(name,email)
联合唯一索引(name,email)
根据索引方式又分为: 
覆盖索引
当查询的数据是从索引表里面查找的,则是覆盖索引
索引合并
将两个单独的索引放到一起,就是索引合并。
默认的查找方式是全表扫描。
在创建表时创建索引:
create table person(id int not null primary key auto_increment,name char(10) not null,age int not null,address varchar(100) not null,index index_name(name));
普通索引:
create index index_name on person(pname);

 

删除索引:

drop index_name on tableName;

 查看索引:

show index from tableName;

 

唯一索引:

  建表时创建唯一索引:

create table person(id int not null primary key auto_increment,name char(10) not null,age int not null,address varchar(100) not null,unique index_name(name));

  创建唯一索引:

creae unique index index_name on tableName(ColumnName);

   删除唯一索引:

 drop unique index index_name on tabeName; 

 

 

主键索引:

  创建表时创建索引:

create table in1(nid int not null auto_increment primary key,name varchar(32) not null,email varchar(64) not null,extra text,index ix_name (name)
)ORcreate table in1(nid int not null auto_increment,name varchar(32) not null,email varchar(64) not null,extra text,primary key(ni1),index ix_name (name)
)创建表 + 创建主键

 

  创建索引:

   alter table tableName primary key(ColumnName); 

  

  删除索引:

  

方式一:
alter table tableName drop primary key;方式二:
alter table tableName modify ColumnName int,drop primary key;

 

组合索引:

设有如下表:

create table tb1(id int not null primary key auto_incremet,name char(10) not null,age int(2) not null,other text)engine=innoDB default charset=utf8;

创建组合索引:

 create index index_name on tableName(columnName1,columnName2); 

如上创建组合索引之后,查询:

  • name and email  -- 使用索引
  • name                 -- 使用索引
  • email                 -- 不使用索引

注意:对于同时搜索n个条件时,组合索引的性能好于多个单一索引合并。

 

other:

explain  关键字可以查看查询语句是通过何种方式查找数据。
explain select * from person where xx=xx;
如果type列示 all则表示全表扫描
如果是ref 则是通过索引查找的
all 表示 全表扫描
ref 表示 普通索引查找
const 唯一索引查找 /  主键索引也是const
组合索引 表示
在全表扫描模式下,如果想达到索引效果,可以用limit 1; 如果只要求一条数据的话。limit 1 表示取得一条数据后就返回。
在 like 模式下, 如果 "%xx" 模式一般不走索引模式,因为前缀为% 表示一切皆有可能, 如果要走索引模式 必须为: “xx%”
reverse(列名) 也一样不走模式。除非是值 reverse(value)
对于比较运算符 来说 一般除了大于 和 不等于 不走索引外,其余的一般都走索引。
对于 or 运算符 ,只有 当or 两边的索引都是索引才走索引,否则不走。

 

转载于:https://www.cnblogs.com/dontgiveup/p/9380229.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/249861.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

dependencies 和 devDependencies 区别

当我们项目需要下载一个模块的时候,我们安装npm包(在项目目录下面npm install module_name)的时候,很多时候我们会在后面加上–save-dev 或 –save。这两个参数代表什么呢? 初识 相信很多人都会回答: np…

CentOS下防御或减轻DDoS攻击方法(转)

查看攻击IP 首先使用以下代码,找出攻击者IP netstat -ntu | awk {print $5} | cut -d: -f1 | sort | uniq -c | sort -n 将会得出类似如下的结果: 1 114.226.9.132 1 174.129.237.157 1 58.60.118.142 1 Address 1 servers) 2 118.26.131.78 3 123.125.1…

iTerm2 快捷键

Ctrl a:将光标移动到命令行首 Ctrl e:将光标移动到命令行尾 Ctrl w:删除光标前的一个单词 Ctrl u:删除所有内容 Ctrl y:粘贴上次删除的内容 Ctrl r:搜索历史命令删除光标之前的单词:ctrl …

vscode - 添加背景图片

首先,CtrlShiftP安装backround , 而后重启vscode会有默认的背景图片 修改背景图,可自定义三张 具体请看gif图 最开始时,发现png根本不是全透明,用ps处理了一下(下列所有操作均字母组合) 1.1 Ctr…

架构设计杂谈004——架构师

什么是架构设师 架构师是:负责系统架构设计的人、团队或组织 架构师主要干什么 ●架构师是技术领导,领导并负责架构设计,负责做决策 ●架构师可以是团队或组织,这个时候通常会有首席架构师 ●架构师必须掌握足够的技术知识 ●架构…

学习JS基本数据类型与对象的valueOf方法

https://blog.csdn.net/licheng11403080324/article/details/60128090 https://yq.aliyun.com/articles/399499 转载于:https://www.cnblogs.com/smzd/p/9548530.html

security和oauth2.0的整合

security和oauth2.0的整合 之前已经介绍过security的相关的介绍,现在所需要做的就是security和oauth2.0的整合,在原有的基础上我们加上一些相关的代码;代码实现如下: pom.xml: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http:…

关于Vue.use()详解

问题 相信很多人在用Vue使用别人的组件时&#xff0c;会用到 Vue.use() 。例如&#xff1a;Vue.use(VueRouter)、Vue.use(MintUI)。但是用 axios时&#xff0c;就不需要用 Vue.use(axios)&#xff0c;就能直接使用。那这是为什么呐&#xff1f; 答案 因为 axios 没有 install。…

百度TTS的来由

#### https://home-assistant.io/components/tts.baidu/#### https://github.com/charleyzhu/HomeAssistant_Components#### 当前使用自定义组件 https://bbs.hassbian.com/thread-1152-1-1.html#### 2018-3-15添加百度云语音识别 - platform: baidu language: zh app_i…

eslint 禁用命令

/* eslint-disable */ ESLint 在校验的时候就会跳过后面的代码还可以在注释后加入详细规则&#xff0c;这样就能避开指定的校验规则了/* eslint-disable no-new */常用&#xff1a; rules: {"comma-dangle": ["error", "never"], //是否允许对象…

分布式工具的一次小升级⏫

前言 之前在做 秒杀架构实践 时有提到对 distributed-redis-tool 的一次小升级&#xff0c;但是没有细说。 其实主要原因是&#xff1a; 秒杀时我做压测&#xff1a;由于集成了这个限流组件&#xff0c;并发又比较大&#xff0c;所以导致连接、断开 Redis 非常频繁。 最终导致获…

浅谈vue $mount()

Vue 的$mount()为手动挂载&#xff0c;在项目中可用于延时挂载&#xff08;例如在挂载之前要进行一些其他操作、判断等&#xff09;&#xff0c;之后要手动挂载上。new Vue时&#xff0c;el和$mount并没有本质上的不同。 具体见代码&#xff1a; 顺便附上vue渲染机制流程图&a…

小三角

{border-color: transparent;border-right-color: #e5e5e5;border-width: 7px;margin-top: -7px;right: 100%;top: 20px;border: solid transparent;content: " ";height: 0;width: 0;position: absolute;pointer-events: none; }转载于:https://www.cnblogs.com/smz…

Laravel日志查看器 -- log-viewer扩展

1.修改laravel配置文件. config\app.php log>daily 2.在项目目录中composer命令安装扩展&#xff1a;composer require arcanedev/log-viewer 3.安装成功后&#xff0c;需要在config\app.php 的providers阵列中注册服务 Arcanedev\LogViewer\LogViewerServiceProvider::clas…

论一个程序员的自我修养-从一张图片说起

故事起源 本来今天想写.NET Core实战之CMS系统第十五篇文章的。哈&#xff0c;奈何今天在新生命人脉群里面看到石头哥分享的一张图片&#xff0c;然后大家就议论了起来&#xff0c;不过我看的很懵逼&#xff0c;这图什么意思啊&#xff1f;当一个朋友讲述了这个图片背后的故事的…

vue实例属性之el,template,render

一、el&#xff0c;template&#xff0c;render属性优先性 当Vue选项对象中有render渲染函数时&#xff0c;Vue构造函数将直接使用渲染函数渲染DOM树&#xff0c;当选项对象中没有render渲染函数时&#xff0c;Vue构造函数首先通过将template模板编译生成渲染函数&#xff0c;然…

mysql8的坑

plugin caching_sha2_password could not be loaded 我在mac上用Sequel Pro连数据库的时候&#xff0c;会报出以上错误&#xff0c;这是应为8.0.11把身份认证插件改成了 caching_sha2_password &#xff0c;而客户端没法使用此插件。 这是我们只要用命令行进去mysql&#xff0c…

c/c++ 继承与多态 文本查询的小例子(非智能指针版本)

问题&#xff1a;在上一篇继承与多态 文本查询的小例子&#xff08;智能指针版本&#xff09;在Query类里使用的是智能指针&#xff0c;只把智能指针换成普通的指针&#xff0c;并不添加拷贝构造方法&#xff0c;会发生什么呢&#xff1f; 执行时&#xff0c;代码崩掉。 分析下…

day19_生成器

20180730 初次上传 20180731 更新&#xff0c;4、列表生成式&#xff0c;以及部分注释 #!/usr/bin/env python # -*- coding:utf-8 -*-# ********************day19_生成器 ******************* # ********************day19_生成器 ******************* # *******************…

HTML渲染过程详解

由于本人对http协议以及dns对url的解析问题并不了解&#xff0c;所以这里之探讨url请求加载到浏览器端时&#xff0c;浏览器对html的解析到呈现过程&#xff0c;后来经过几位道友分享&#xff0c;整理了一下url解析的过程&#xff0c;如下&#xff1a; 用户输入url地址&#x…