tp mysql索引_mysql索引

1 查看表中已存在哪些索引:show index from 表名;

在添加索引之前最好先查看一下该表中已存在哪些索引:show index from 表名;

1、主键索引

注意: 主键索引一张表中只能有一个,但是可以添加多个索引 比如:唯一索引、普通索引、全文索引。

主键索引:一般在建表的时候就添加了 比如:id 一般是主键索引加自动递增。

建表后添加主键索引 :alter table table_name add primary key (column name);

主键索引的特点:不能为空且唯一。

2、普通索引

创建普通索引: alter table table_name add index 索引名(column1,column2);

3、唯一索引

创建唯一索引:ALTER TABLE `table_name` ADD UNIQUE (`column`);

唯一索引与主键索引的区别:

唯一索引:可以有多个null 但数据内容不能重复

主键索引:不能为null,且内容只能唯一。

两个区别就在于主键索引不能为null 唯一索引可以有多个null 其余都一样。

4、全文索引

全文索引只有MyISAM有效(mysql5.6之后InnoDB也支持了全文索引)[5.7不支持MyISAM]

全文索引主要针对文本文件,比如文章、标题。

在创建表时创建全文索引:

CREATE TABLE `article` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,`title` varchar(200) DEFAULT NULL,`content` text,PRIMARYKEY (`id`),FULLTEXTKEY `title` (`title`,`content`)

) ENGINE=MyISAM(5.6之后InnoDB也支持全文索引 、5.7不支持MyISAM引擎) DEFAULT CHARSET=utf8;

在现有表中创建全文索引:

ALTER TABLE article ADD FULLTEXT INDEX fulltext_article(title,content);

创建完全文索引之后使用也有要注意的地方:

众所周知在数据库中进行模糊查询是使用like关键字进行查询的,例如:

SELECT *FROM articleWHERE contentLIKE ‘%查询字符串%';

那么,我们在使用全文索引也这样使用吗?当然不是,我们必须使用特有的语法才能使用全文索引进行查询,例如,我们想要在article表的title和content列中全文检索指定的查询字符串,我们可以如下编写SQL语句:

SELECT* FROM article WHERE MATCH(title,content) AGAINST (‘查询字符串');

注意:MySql自带的全文索引只能对英文进行全文检索,目前无法对中文进行全文检索。如果需要对包含中文在内的文本数据进行全文检索,我们需要采用Sphinx(斯芬克斯)/Coreseek技术来处理中文。

目前,使用MySql自带的全文索引时,如果查询字符串的长度过短将无法得到期望的搜索结果。MySql全文索引所能找到的词默认最小长度为4个字符。另外,如果查询的字符串包含停止词,那么该停止词将会被忽略。

如果可能,请尽量先创建表并插入所有数据后再创建全文索引,而不要在创建表时就直接创建全文索引,因为前者比后者的全文索引效率要高。

删除索引sql语句:alter table table_name drop index 索引名;

通过上面的简单介绍后,那么应该在哪些字段上添加索引呢?1、 频繁查询的字段,应该创建索引。2、更新非常频繁的字段,不应该创建索引。3、唯一性太差的字段,比如 gender字段,就不应该创建索引。4、不会出现在where条件之后的字段,不应该创建索引。

满足一下条件,应该创建索引:1、频繁要查询的字段,经常出现在where条件后面的字段,应该创建索引。2、更新不频繁的字段,可以创建索引。

索引使用的注意事项1.对于创建的多列索引,只要查询条件使用了最左边的列,索引一般就会被使用。

比如我们对title,content 添加了复合索引

select* from table_name where title = 'test';会用到索引

select* from table_name where content = 'test';不会用到索引2.对于使用like的查询,查询如果是 ‘%a'不会使用到索引 ,而 like 'a%'就会用到索引。最前面不能使用%和_这样的变化值

3.如果条件中有or,即使其中有条件带索引也不会使用。

4.如果列类型是字符串,那一定要在条件中将数据使用引号引用起来。

查看索引的使用情况:show status like‘Handler_read%';

handler_read_key:这个值越高越好,越高表示使用索引查询到的次数。

handler_read_rnd_next:这个值越高,说明查询低效。

总结

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

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

相关文章

CSS Id 和 Class

2019独角兽企业重金招聘Python工程师标准>>> id 和 class 选择器 如果你要在HTML元素中设置CSS样式,你需要在元素中设置"id" 和 "class"选择器。 id 选择器 id 选择器可以为标有特定 id 的 HTML 元素指定特定的样式。 HTML元素以id属…

这4部有生之年必看的“教材级”纪录片,免费领取!

全世界只有3.14 % 的人关注了爆炸吧知识纪录片是以真实生活为创作素材,以真人真事为表现对象,并对其进行艺术的加工与展现的,以展现真实为本质,并用真实引发人们思考的电影或电视艺术形式。好的纪录片就像打开了一扇新世界的大门&…

Dapr 集成 APISIX 做API网关

在这篇文章中,我将展示如何创建一个 APISIX控制器,该控制器在 Kubernetes 集群中公开启用 Dapr 的应用程序。本质上,APISIX控制器将配置相同的标准 Dapr annotations以注入daprd sidecar。通过公开这个 sidecar,它将允许外部应用程…

判断一个字符串是否包含另一个字符串(用java但是不能用index()这个函数)

目录: 一.方法介绍 二.图示意 三.源代码 一.方法介绍 判断一个字符串str1是否包含另一个字符串str2: 1.取str2的第一个字符一次和str1的字符依次比较,知道找到相等的字符为止或者找完整个str1的length. 2.当找到相等的字符后,在str2长度内str2与str1依次进行比较 二…

mysql添加字段时定义候选键_MySQL 表约束

约束概述对数据表中数据的限制条件叫表的约束,目的是为了保证表中记录的完整和有效。例如非空、唯一等。查看约束1 通过查看建表语句 查看表中的约束show create table tb_name;2 通过检查约束表 查看约束select * from information_schema.table_constraints where…

跳槽9招让你“空降”任何企业都能成功

2019独角兽企业重金招聘Python工程师标准>>> 作为一名职业经理人,没有谁没跳过槽,撇开在跳槽时对所“空降”的企业所需要的行业知识知根知底而“得心应手”,从而“稳定”外,其他人可能或多或少都有过因“不适应”新单位…

这个年纪,喜欢你的肉体还会送你包的,原来是......

1 iPhone 12一出王守义成最大赢家(素材来源网络,侵删)▼2 想搭免费车的喵(dy:大兔几)▼3 拼纹身的有吗?纹在我身,刀在你身▼4 那你泡啥?▼5 快把知识君p上去&#xff…

Response. AppendHeader使用大全及文件下载.net函数使用注意点(转载)

Response. AppendHeader使用大全文件下载,指定默认名 Response.AddHeader(”content-type”,”application/x-msdownload”); Response.AddHeader(”Content-Disposition”,”attachment;filename要下载的文件名.rar”); 刷新页面 Response.AddHeader “REFRESH”, …

C# WPF MVVM模式Caliburn.Micro框架下事件发布与订阅

01—前言处理同模块不同窗体之间的通信和不同模块之间不同窗体的通信,Caliburn提供了一种事件机制,可以在应用程序中低耦合的模块之间进行通信,该机制基于事件聚合器服务,允许发布者和订阅者之间通过事件进行通讯,且彼…

mysql触发器 node_node.js中事件触发器events的使用

node.js是基于事件驱动的,通过events,我们可以方便的创建事件,并通过触发事件来调用我们自定义的监听函数。所有能触发事件的对象都应该是 EventEmitter 类的实例,一般我们自定义一个类继承于 EventEmitter 类。通过on()方法我们可…

Android之UI线程与子线程交互设计的5种方法

转载地址:http://www.cr173.com/html/19165_1.html 在android的设计思想中,为了确保用户顺滑的操作体验。一些耗时的任务不能够在UI线程中运行,像访问网络就属于这类任务。因此我们必须要重新开启一个后台线程运行这些任务。然而,往往这些任务最终又会直接或者间接的需要访…

svn: Can't open file '/a/b/db/txn-current-lock': Permission denied

SVN新建完版本库,在提交的时候报出如下错误 svn: Cant open file /a/b/db/txn-current-lock: Permission denied Permission denied svn: Cant make directory /a/b/dav/activities.d: Permission denied Permission denied 解决方法: chmod -R 755 /a/b…

常用的加密算法---数字摘要

数字摘要:数字摘要也称为消息摘要,它是一个唯一对应一个消息或文本的固定长度的值,它是一个单向Hash函数对消息进行计算产生的。摘要生成的过程:待摘要串-----> Hash函数-----> 摘要消息摘要的特点:1.无论输入的…

清华最强本科生Top10出炉,从来没有什么天才学霸!

全世界只有3.14 % 的人关注了爆炸吧知识‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍本文转自:量子位作者:木易 鱼羊一年一度,清华园里的“神仙打架”,投票结果已经出炉。根据清华大学官方消息,2020年清华大学特等奖学金&#x…

day19(中)_IO流3(模拟缓冲区,装饰设计模式)

1.MyBufferedReader和MyBufferedInputStream 1.模拟字符读取流的缓冲区: /*根据readLine原理:自定义一个类包含一个功能和readLine一致的方法来模拟以下BufferedReader方法 */ package myreadline; import java.io.FileReader; import java.io.IOException;class MyBufferedRea…

手把手教你学Dapr - 8. 绑定

介绍使用绑定,您可以使用来自外部系统的事件触发您的应用程序,或与外部系统交互。这个构建块为您和您的代码提供了几个好处:消除连接和轮询消息系统(如队列和消息总线)的复杂性关注业务逻辑,而不是如何与系…

python win7 sp1_[ Python - 15 ] win7安装paramiko问题总汇

安装环境:win7 sp1 python3.5 安装paramiko新装的win7 sp1 x64位系统,安装好python3.5和pycharm后,需要用到paramiko模块于是开始安装:>>pip install paramiko报错:warning: GMP or MPIR library not found; Not…

Android之百度地图定位最详细使用总结

Android之百度定位 如果项目里面有定位功能的话,一般还是觉得蛮高大上的,我们项目用的百度定位,到网上找了很多资料,很多都不全面,很多博客都没有小伙伴期望得到当前的省和城市出来,然后自己动手也有很多错误,不知道错在哪里,也在网上找为什么…

CountDownLatch应用实战

2019独角兽企业重金招聘Python工程师标准>>> 1. CountDownLatch简介 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。其本质就是一个共享锁。 他最主要的作用是用来同步java的线程。 主要有以下三个方…

用JoyToKey使游戏手柄变键盘或鼠标

用JoyToKey使游戏手柄变键盘或鼠标 除了用手柄来玩游戏外,你有没有想过利用手柄做点别的什么事情呢?其实,只要结合一个非常小巧的游戏控制器增强软件JoyToKey,我们就能最大限度地挖掘手柄的潜力,用它来完成在以前看来“…