数据库07

索引

  索引是一种单独的物理层面的数据结构,其作用是用于加速查询

  mysql把数据存储到硬盘中,硬盘读写速度非常慢

  一个应用程序,本质上就是对数据进行增删改查

  一旦数据量比较大时,硬盘的响应速度变慢,给用户的感觉应用程序非常的慢

  查询操作是应用程序使用中频率最高的操作

  索引最终目的就是要提升查询速度

  索引带来的问题:

    1 添加索引后,整体的数据更多了(占用额外的磁盘空间)

    2 由于有了索引,多数数据的添加修改删除,都会引发索引的重建(使增删改的效率降低)

  索引不是越多越好

  索引的实现:

    查询之所以慢的原因,数据量大是一个问题

    但最核心的问题就是硬盘IO操作速度问题

    mysql通过B+树结构来组织数据

  IO操作有一个预读的优化机制:操作系统会将相邻的数据也读取到内存中,来减少读取次数

  mysql 通过B+树这种结构来减少IO操作

  B+树种每一个磁盘块有两个数据项,三个地址,在查询时会比较大小

  如果小于左边就访问左边的磁盘块,如果大于右边就访问右边的磁盘块否则就访问中间的磁盘块,与二分法相同,只不过每次把数据分成三段

  聚集索引(主键)

    主键索引,速度快因为只要根据id找到叶子节点

    那么该行的所有数据都拿到了

    innoDB需要用主键索引来建立数据结构,索引每一个表都应该有主键

  辅助索引

    除了主键索引之外的所有索引都是负责索引

    辅助索引会单独创建树结构,其中存储索引数据本身以及该数据对应主键值

    查找过程中肯定出现的情况

      覆盖索引:是在当前树结构中就拿到了所有需要的数据

      回表:是在负责索引中没有查询到需要的数据,就需要拿着id回到主键索引中查找

  在编写sql时,如果有主键值,优先使用主键来查询

  如果没有主键值,需要用辅助索引,尽量少查字段

  最好保证需要的数据就在辅助索引中,避免使用select *

  索引的优化,分为两方面

    1 索引结构的优化

      数据量小的,重复度低的做索引

    2 sql语句的优化

      sql语句中条件应该是索引字段

      避免在模糊匹配中,在第一个字符使用%

      不要对主键进行运算

    3 and 与 or

      在and语句红mysql会优化查询带有索引的字段,无论书写位置,都会先找主键

      or语句不会自动选择索引,需要避免使用or语句

    4 多字段联合索引

      如果要查询的字段教多,为每一个字段都创建索引会造成额外的容量的占用并且当你修改一条记录时又可能索引都需要重建,会非常慢

      建立多字段联合索引中顺序是重点

      创建索引是,把重复度低的字段放在最左边,依次排开

      编写sql语句时,保证重复度低的字段出现在sql语句中即可

  创建索引语法

    create index 索引的名字 on 表名(字段名);

  删除索引

    drop index 索引名字 on 表名;

转载于:https://www.cnblogs.com/LinChengcheng/p/10573832.html

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

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

相关文章

ODT .NET 详解之 SqlDataSource 访问 Oracle

前一篇博文呢,介绍了如何搭配好 Oracle Developer Tools for Visual Studio .NET 的使用环境, 这一篇博文的话就会重点来介绍一下如何通过使用 SqlDataSource 这个控件来访问 Oracle 数据库了, 其实只要环境搭配好了,那么这一篇博…

springboot+thymeleaf+pageHelper带条件分页查询

html层 <div><a class"num"><b th:text"共 ${result.resultMap[pages]} 页"></b></a><a class"num" th:if"${result.resultMap[hasPreviousPage]} true" th:href"{/report/receivePage?cur…

Linux文件、目录权限及常用命令

############################################# 一、权限                 #############################################1、r 可读 42、w 可写 23、x 可运行 1##…

谷歌:不守规矩的“顽童”

十几岁&#xff0c;对于人类来说&#xff0c;是敏感多虑且叛逆的青春期&#xff0c;而十几岁对于一个企业则意味着扎实经营基础的黄金阶段。谷歌&#xff08;Google&#xff09;&#xff0c;这个十年来互联网领域最大的赢家&#xff0c;正是这个即将步入金钗之年的“顽童”&…

bloom filter

今天的文章和大家一起来学习大数据领域一个经常用到的算法——布隆过滤器。如果看过《数学之美》的同学对它应该并不陌生&#xff0c;它经常用在集合的判断上&#xff0c;在海量数据的场景当中用来快速地判断某个元素在不在一个庞大的集合当中。它的原理不难&#xff0c;但是设…

数据描述

数据描述 1、静态数据 本系统支持用户个人信息存储以及旅游地点、天数、花费金额、景点的推荐存储。因此&#xff0c;本系统需要存储数据库部分信息。 2、动态数据 用户登录信息 用户搜索结果 用户个人信息 旅游分享的攻略 用户个人留言 用户偏好信息 3数据库描述&#xff1a;数…

样式的使用(七)

在自定义组件中使用运行时样式 1、css文件 /* ../assets/CustomComponentStyles.css */ namespace s "library://ns.adobe.com/flex/spark"; namespace mx "library://ns.adobe.com/flex/halo"; .specialStyle{font-size:24;font-weight:bold; } 记得要把文…

skiplist原理与实现

今天继续介绍分布式系统当中常用的数据结构&#xff0c;今天要介绍的数据结构非常了不起&#xff0c;和之前介绍的布隆过滤器一样&#xff0c;是一个功能强大原理简单的数据结构。并且它的缺点和短板更少&#xff0c;应用更加广泛&#xff0c;比如广泛使用的Redis就有用到它。 …

JavaScript与HTML交互——事件

JavaScript和HTML的交互是通过事件实现的。JavaScript采用异步事件驱动编程模型&#xff0c;当文档、浏览器、元素或与之相关对象发生特定事情时&#xff0c;浏览器会产生事件。如果JavaScript关注特定类型事件&#xff0c;那么它可以注册当这类事件发生时要调用的句柄。 事件流…

ORMMySQL

概念: ORM&#xff1a;对象关系映射 , 全拼 Object-Relation Mapping ,是一种为了解决面向对象与关系数据库存在的互不匹配现象的技术。主要实现模型对象到关系型数据库数据的映射.比如&#xff1a;把数据库表中每条记录映射为一个模型对象 使用原因: 若不使用ORM框架实现一个应…

实现WM下删除最后一条匹配的通话记录

代码很简单就是操作EDB数据库&#xff0c;先按开始时间降序排序&#xff0c;然后删除第一条匹配的记录。 1 boolDeleteLastCallLogByNumber(LPCTSTR lpszNumber)2 {3 typedef enum4 {5 CT_Reserved0,6 CT_Outgoing1,7 CT_Connected2,8 CT_Ended4,9 CT_Voice_Data8,10 CT_Roam16…

std::string中的反向迭代器rbegin()和rend()

在std::string中&#xff0c;有个接口是rbegin()和rend()&#xff0c;分别表示string字符串的倒数第一个字符和正数第一个字符&#xff1b; rbegin()&#xff1a;表示string字符串的倒数第一个字符 rend()&#xff1a;表示string字符串的正数第一个字符 分为普通的iterator和…

【转】[教程] CSS入门3:如何插入CSS样式

http://bbs.blueidea.com/forum.php?modviewthread&tid2524742 转载于:https://www.cnblogs.com/lzhitian/archive/2012/11/25/2787164.html

5.spiders(文件夹)

一、基础知识 1. Spiders 文件夹 用于编写爬虫规则&#xff0c;可以在已有的___init__.py文件中编写具体的爬虫规则但是实际开发中可能有多个爬虫规则&#xff0c;所以建议一个爬虫规则用一个文件表示&#xff0c;这样便于维护和管理 2. 代码 # -*- coding: utf-8 -*- import s…

unlink(file_name)

官方描述&#xff1a; unlink的文档是这样描述的: unlink() deletes a name from the filesystem. If that name was the last link to a file and no processes have the file open the file is deleted and the space it was using is made available for reuse. …

sql server行级锁,排它锁,共享锁的使用

一. 为什么要引入锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: 丢失更新 A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统 脏读 A用户修改了数据,随后B用户又读出该数据,但A用户因为某些原因取消了对数据的修…

日常学习笔记(1)

2019/03/19 21:12 1.函数&#xff1a;numpy.linspace(start,stop,num50,endpointTrue,retstepFalse,dtypeNone)参数&#xff1a; start&#xff1a;scalar类型&#xff08;个人理解是标量的意思&#xff0c;这不是一个具体的数据类型&#xff0c;而是指某一些数据类型&#xff…

淘宝开发平台知识点一,入门指南

App Key&#xff1a;12038991 App Secret&#xff1a;bb6e1d29db744ed023bfed6a3af6f4f3 1,测试环境下&#xff0c;获取授权码&#xff0c;只有十分钟 http://open.taobao.com/isv/authorize.php?appkey12038991 2&#xff0c;http://container.api.tbsandbox.com/container?…

【转】Linux 下修改Tomcat使用的JVM内存大小

转自 &#xff1a;http://blog.csdn.net/sully2008/article/details/6457570 我的服务器的配置&#xff1a;# OS specific support. $var _must_ be set to either true or false.JAVA_OPTS"-Xms1024m -Xmx4096m -Xss1024K -XX:PermSize512m -XX:MaxPermSize2048m"…

OpenSSL 创建自签名证书

1、生成服务器私钥openssl genrsa -out client.key 40962、生成证书签名请求&#xff08;CSR&#xff09;openssl req -new -key client.key -out client.csr3、使用上一步的证书签名请求签发证书openssl x509 -req -days 365 -in client.csr -signkey client.key -out client.…