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程序员需要掌握哪些技能才能通过大公司的面试

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

java编程有什么独特之处?

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

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

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

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

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

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

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

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

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

Java到底能做什么事情呢?

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

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

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

Alibaba之MySQL宝典_阿里巴巴内部 MySQL宝典 意外流出!极致经典,堪称数据库的天花板...

MySQL 是一个关系型数据库,使用 SQL 语言进行增删改查操作,目前属于 Oracle 旗下的产品。MySQL 数据库开源免费,能够跨平台,支持分布式,性能也不错,可以和 PHP、Java 等 Web 开发语言完美配合,非…

deflater java_java.util.zip 类 Deflater - Java 中文参考手册

java.lang.Objectjava.util.zip.Deflaterpublic class Deflaterextends Object此类使用流行的 ZLIB 压缩程序库为通用压缩提供支持。ZLIB 压缩程序库最初是作为 PNG 图形标准的一部分开发的,不受专利的保护。有关该规范的完整描述,请参见 java.util.zip …

gdal java api_Java使用GDAL库

GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式。它还有一系列命令行工具来进行数据转换和处理。GDAL官方网址:http://www.gdal.org/,它能支持当前流行的各…

java reflectionutils_Spring中的各种Utils(五):ReflectionUtils详解(转载)

原文出处:https://blog.csdn.net/wolfcode_cn/article/details/80660515原创文章,转载请注明出处。本节中,我们来看看Spring针对反射提供的工具类:ReflectionUtils。反射在容器中使用是非常频繁的了,ReflectionUtils中…

java在线网页客服聊天_管理员消息java 网站用户在线和客服聊天

首先声明,我是一个菜鸟。一下文章中出现技术误导情况盖不负责这是应用到项目中的一个例子。实现原理是将信息存储到Application域里面。然后应用Struts2 Action 用json格式的数据停止前后台交互。截图:前台用户界面:后台客服界面:…

java股票数据_java抓取东方财富股票数据(附源码)

背景前段时间给朋友写了一个自动抓取同花顺股票数据的程序,不少人觉得不错。这几天后台有粉丝给我留言让我也抓一下东方财富的数据,说东方财富的数据特别难抓,我还真不一定能搞得定。本来我是一个德艺双磬且与世无争的佛系程序员,…

java string 转 inputstream_String和inputstream互转【转文】

URLConnection urlConn url.openConnection(); // 打开网站链接sBufferedReader reader new BufferedReader(new InputStreamReader(urlConn.getInputStream(), "UTF-8")); // 实例化输入流,并获取网页代码String s; // 依次循环,至到读的值…

java adminlte 使用_AdminLTE2管理后台自定义

项目中需要用到 AdminLTE 管理后台模板,所以,这里对后台进行一个简单的布局修改,然后结合后端语言进行快速开发一个管理后台。一、示例后台布局这个示例后台带了许多开箱即用的脚手架,我们项目中只需要简单的东东,所以…

学习Java编程面向对象的五大基本原则

Java 是面向对象的高级编程语言,类和对象是 Java 程序的构成核心。围绕着 Java 类和 Java 对象,有三大基本特性:封装是 Java 类的编写规范、继承是类与类之间联系的一种形式、而多态为系统组件或模块之间解耦提供了解决方案。 单一职责原则&…

小白学习Java技术知识点总结,其实学习Java没那么难

边学习边记录是程序员快速进步的途径,只有你不断累积知识,才能有质的飞跃,不断的coding,累积经验。 第一讲,主要是Java环境变量的配置。 搭建好环境才能干活。要理解什么是编译、什么是运行。编译是Javac.exe程序在负…

为什么说Java 程序员必须掌握 Spring Boot?

大部分人选择学习Java,自然是因为看上了Java的薪资待遇,java的地位可谓在编程界属于大佬,最近Spring Boot 2.0 的推出来后,又激起了一阵学习 Spring Boot 的热潮,那么, 使用 Spring Boot 会带来什么样的变革?一起来了…

你想成为Java架构师吗?掌握这六项就够了!

Java架构师,应该算是一些Java程序员们的一个职业目标了吧。很多码农码了五六年的代码也没能成为架构师。 我在这里分享6个专题来提高大家的编程能力 开源框架解析-架构师筑基-高性能架构-微服务架构-团队协作开发-B2C商城实战 一、开源框架解析: 程序…