mysql怎么实现生日字段前一个小时提醒_MySql学习笔记(二) 索引的设计和使用...

作为开发人员,数据库的索引是我们再熟悉不过的了。那么实话真的会了吗,在项目开发中随便定义一个int、varchar后边跟个primary key或者加个index就好了么?考虑到这些咋还真的需要看看专业的人都是怎么做的。在mysql中索引是提升性能的常用工具,一般来说我们就是通过让where的条件字段变成索引,或者如果where条件比较多的话一般将前边的条件做成索引。这样就可以通过索引快速筛选大量数据,然后在小范围的结果集中通过全表扫描的方式进行目标检索。在mysql中每个列都可以被索引,但是对于每种表类型来说,索引的数量和索引的本身字段长度都有限制。比如myisam、innodb、memory等每个表至少支持16个索引。索引长度至少256字节。mysisam和innodb表的默认索引为Btree索引,支持前缀索引,也就是对一个字段的前多少个字符建立的索引,对于myisam表来说索引的前缀可达1000字节,而对innoDb来说其前缀索引最长为767字节。mysql中还支持全文索引,这种索引可以做全文检索使用,但是全文索引只限于char、varchar和text字段列。默认情况下,memory使用的是hash索引,但也支持btree索引如何对一个字段创建索引?
-- 对test表的name字段的前5个字段检索索引create index name_index on test(name(5))-- 当然,我们也可以看看我们的索引在检索的时候是否被使用了explain select * from test where name!=''

4929d989982f6a3ad86b25330cca60e4.png

-- 如果您要删除索引drop index name_index on test;

索引创建的原则

1.不一定要选择所有选择的列,最适合索引的列是出现在where字句中的列,而不是select中的列2.使用唯一索引,考虑某个列值得分散。索引的列的基数越大索引效果越好。例如存放出生日期的列具有不同值,很容易区分,而使用性别的话区分度不大。3.使用短索引,如果对字符串进行索引,应该指定一个前缀长度,比如一个字段varchar(300),但是前10到20字段就能区分,那么在前10到20个字符上建立索引就可以区分很多数据,而且还可以节省索引空间。磁盘io也会变少,而且mysql在内存中可以存储更多的缓存,所以检索会变快。4.利用最左前缀,在创建一个n列索引的时候,实际上创建了mysql可利用的n个索引,多列索引可起多个索引的作用,但是匹配的时候都是通过最左进行的。5.不要过度索引,每个索引都要占据磁盘空间,并降低写操作的性能,在修改表的时候索引也要同步更新甚至重构,所以索引越多会带来一定的损耗。所以说如果一个索引经常不用那么这个索引就是负担。所以的创建索引要以优化检索为目的,但不能损耗插入的性能。6.innodb表默认是按照一定顺序存储的,也就是说如果指定了主键则按照主键顺序进行保存,如果没有主键但是有唯一索引,那么innodb会按照唯一索引的顺序进行存储,如果都没有的话,innodb会生成一个内部列并按这个列的顺序进行存储。检索的时候按主键或者内部列是最快的。所以innodb表最好指定主键,另外innodb表的普通索引也会存储主键的键值,所以在设置主键的时候尽量选用短数据类型,从而减轻索引的磁盘空间,提高索引的缓存效果。

Btree和Hash索引

memory可以选择btree和hash索引,但是hash索引的使用要注意哦!因为hash索引是通过计算得出的具体数据地址,索引hash索引肯定不能使用= 或者》= 和《=等运算符,当然也不能使用order by进行排序。hash索引只能通过关键字来检索一行数据。对于in查询来说,btree和hash索引并没有什么差别。在对范围进行查询的时候,只能使用btree索引。如果对hash索引采用范围查询,那么将是全表扫描式的检索。要注意的是memory表的默认索引模式为hash索引。大多数的mysql索引,比如primary key、unique、index、fulltext等都是在btree中存储,除此之外memory还支持hash索引。

7b631f82d971f0462a0ab55fb66da384.png

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

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

相关文章

Java程序员需要掌握哪些技能才能通过大公司的面试

首先我们来谈一下程序员的阶段,在学校里的三年对于程序员来说是第一个门槛,这个阶段将会淘汰掉一批不适合写代码的人。这一阶段,我们走出校园,迈入社会,成为一名程序员,正式从书本上的内容迈向真正的企业级…

python中计算整商的运算符_Python 运算符中用来计算整商的是( ). (2.0分)_学小易找答案...

【判断题】函数的名称可以随意命名。( ) (2.0分)【判断题】python中的代码块使用缩进来表示。 (2.0分)【单选题】下列选择中,符合python命名规范的标识符是( )。 (2.0分)【单选题】下列表达式中,返回值是True的是( )。 (2.0分)【判断题】函数定义完成后,系统会自动执行其内部的…

java编程有什么独特之处?

Java编程已经成为了一个坚实的平台,可以赶上甚至超过本地代码的水准。它能使开发者花最小的代价完成工作,同时还能使得开发者在一段时间之后,还能继续完成别人的代码并且明白其中的意思。当然,你也可以编写可读性差的代码&#xf…

初学Java学员,千万不要踩这几个坑

2019即将到来,我们的编程界的大佬不由得发表一波感慨,新的一年将会有哪些语言上榜,不过小编还是相信Java不会落榜的。今天我们来谈一下那写年学习Java踩的坑。 一、敲代码追求速度,没有正确率 相信看过很多大神打代码速度非常快…

peewee mysql自动断开_flask+mako+peewee(下)(解决了Error 2006: MySQL server has gone away)

这篇主要介绍在这次项目中使用的peewee首先我们要初始化一个数据库连接对象。这里我使用了peewee提供的链接池。当然你也可以直接指定连接例如:db SqliteDatabase(base.db)我这里使用了peewee扩展pool,并初始化db对象参数。from playhouse importpooldb…

JAVA程序员已成为最疯狂的加班行业,没有之一?

程序员界加班经常成为业界讨论的话题,夜幕降临,大楼里依然灯火通明时,那一刻,仿佛让我渐渐的忘记了时间,我知道我不是一个在加班,我不是一个人!连续加班已成为常事,一点不夸张。 “…

layui table reload post请求_如何实现在Layui框架中完成父窗口刷新(更新)

最近有个项目使用Layui框架进行后端系统的界面搭建,其中Layui框架中的Layer组件在项目中会用得非常多。且有些功能会遇到子窗口完成数据的提交后,进行关闭同时会刷新父窗口的数据,所以此文章分享一下《如何实现在Layui框架中完成父窗的刷新功…

Java开发人员需要掌握数据库的知识点有哪些?

现在主流的Java开发人员一般都需要会主流数据库。开发人员需要对Mysql、Oracle、SqlServer这三个常用的熟悉了解。在数据量比较大或者请求数比较高的情况下,需要了解一些特定数据库针对性优化。SQL相关入门熟悉表、字段、记录、索引等概念。 熟悉SQL的约束&#xff…

java jdbc mysql 乱码_【求助】为什么用纯java jdbc插入mysql一直乱码

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼String str "人造革";//gbk编码使用2个字节表示一个汉字,所以buffer的长度应该为6byte[] buffer str.getBytes("gbk");//[-56, -53, -44, -20, -72, -17]System.out.println("gbk编码的byte信息:"…

Java到底能做什么事情呢?

相信很多小伙伴看到标题第一个出现在脑海里的想法是赚钱,难道你们只知道java薪资高?那么你太low,Java的应用领域很广,可以说是现在最普及的,遍布各行各业,可见其优势所在。 1、大数据领域 Hadoop以及其他大数据处理技…

MySQL中怎么优化数据倾斜_Greenplum 调优--数据倾斜排查(一)

对于分布式数据库来说,QUERY的运行效率取决于最慢的那个节点。当数据出现倾斜时,某些节点的运算量可能比其他节点大。除了带来运行慢的问题,还有其他的问题,例如导致OOM,或者DISK FULL等问题。如何监控倾斜1、监控数据…

成为优秀的Java程序员要具备哪些技能?

Java是热门的编程语言,热衷技术,掌握一门语言,我们最重要的是知识的积累和运用,那我们需要掌握哪些技能才能成为优秀的Java程序员呢?小编来为大家解答一波。 1.拥有扎实的基础和深刻理解能力 Java 程序员&#xff0c…

mysql登陆 慢_mysql登陆慢问题解决

mysql登陆慢问题解决现象:系统正常, 本地登陆速度很快. 查询等操作没有问题. 日志无报错信息. 但远程登陆异常缓慢, 甚至需要等20分钟. 登陆后检查mysql> show processlist;存在大量处于login状态的未授权用户进程.解决:在my.cnf文件中加入参数 “skip-name-resolve” , 重新…

Java 平台有哪几个版本?

Java 平台的版本有哪些?我相信只要接触过Java入门的小伙伴都知道,但是问起你具体的细节你不一定能全部答的上来。 一、 Java SE(Java Platform,Standard Edition) Java SE 以前称为 J2SE。它允许开发和部署在桌面、服务…

java编译源文件_Java实现编译源文件(Java源码)

代码案例:import java.util.ArrayList;import java.util.List;import javax.tools.DiagnosticCollector;import javax.tools.JavaCompiler;import javax.tools.JavaFileObject;import javax.tools.StandardJavaFileManager;import javax.tools.ToolProvider;public …

学习Java能够从事哪些工作?

学习Java编程能够胜任哪些工作?在互联网行业快节奏的发展,根据以往的经验,做一个简要的分析,掌握了Java这门技术,就业面也是很广的,不管是电脑方面的软硬件开发还是手机的软硬件开发Java都是必不可少的技术…

java面试题 sql_Java面试题总结之数据库与SQL语句

1、有3个表,表结构如下:Student学生表(学号,姓名,性别,年龄,组织部门)Course课程表(编号,课程名称)Sc选课表(学号,课程编号,成绩)。1)写一个SQL 语句,查询选修了’计算机…

Java 程序员必须掌握的 Linux 命令

作为一名程序员,小编觉得还是应该懂得linux,不说深入,起码的使用还是要会,能深入当然最好了,平时开发过程中不使用Linux(Unix)或者mac系统,也需要熟练掌握Linux命令。在做完项目上线时候,需要与…

java 二进制文件 数据库_java从数据库中读取二进制文件并....

弑天下首先你需要确定附件的类型及名称。然后下载很简单的,根据下载的请求返回response.addHeader ("content-type","application/RFC822");response.addHeader ("Content-Disposition","attachment; filenameword,pdf");O…

java 负数 位移运算_Java中的位移运算

在Java中&#xff0c;位移运算属于基本运算&#xff0c;符号是<>&#xff0c;即向左位移和向右位移。在Java中只有整数才能位移&#xff0c;所以其他的不考虑&#xff0c;位移运算是将整数在内存中表示的二进制进行位移&#xff0c;所以在Java中分为正数和负数的位移。对…