怎样正确创建MySQL索引的方法详解

作者&投稿:仰卞 (若有异议请与网页底部的电邮联系)
~

索引类似大学图书馆建书目索引,可以提高数据检索的效率,降低数据库的IO成本。MySQL在300万条记录左右性能开始逐渐下降,虽然官方文档说500~800w记录,所以大数据量建立索引是非常有必要的。MySQL提供了Explain,用于显示SQL执行的详细信息,可以进行索引的优化。

什么是索引?

MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。我们可以简单理解为:快速查找排好序的一种数据结构。Mysql索引主要有两种结构:B+Tree索引和Hash索引。我们平常所说的索引,如果没有特别指明,一般都是指B树结构组织的索引(B+Tree索引)。索引如图所示:



最外层浅蓝色磁盘块1里有数据17、35(深蓝色)和指针P1、P2、P3(黄色)。P1指针表示小于17的磁盘块,P2是在17-35之间,P3指向大于35的磁盘块。真实数据存在于子叶节点也就是最底下的一层3、5、9、10、13??非叶子节点不存储真实的数据,只存储指引搜索方向的数据项,如17、35。

查找过程:例如搜索28数据项,首先加载磁盘块1到内存中,发生一次I/O,用二分查找确定在P2指针。接着发现28在26和30之间,通过P2指针的地址加载磁盘块3到内存,发生第二次I/O。用同样的方式找到磁盘块8,发生第三次I/O。

真实的情况是,上面3层的B+Tree可以表示上百万的数据,上百万的数据只发生了三次I/O而不是上百万次I/O,时间提升是巨大的。

数据表索引可以提高数据的检索效率,也可以降低数据库的IO成本,并且索引还可以降低数据库的排序成本。排序分组操作主要消耗的就是CPU资源和内存,所以能够在排序分组操作中好好的利用索引将会极大地降低CPU资源的消耗。下面我们将简单的分析一下怎样正确创建MySQL数据索引。

怎样判断是否需要创建索引?

1、某些字段需要频繁用作查询条件时需要为它建立索引

这个应该都知道,什么样才是频繁呢?综合分析你执行的所有SQL语句。最好将他们一个个都列出来。然后分析,发现其中有些字段在大部分的SQL语句查询时候都会用到,那么就果断为他建立索引。

2、唯一性太差的字段不适合建立索引

什么是唯一性太差的字段?如状态字段、类型字段。那些只存储固定几个值的字段,例如用户登录状态、消息的status等。这个涉及到了索引扫描的特性。例如:通过索引查找键值为A和B的某些数据,通过A找到某条相符合的数据,这条数据在X页上面,然后继续扫描,又发现符合A的数据出现在了Y页上面,那么存储引擎就会丢弃X页面的数据,然后存储Y页面上的数据,一直到查找完所有对应A的数据,然后查找B字段,发现X页面上面又有对应B字段的数据,那么他就会再次扫描X页面,等于X页面就会被扫描2次甚至多次。以此类推,所以同一个数据页可能会被多次重复的读取,丢弃,在读取,这无疑给存储引擎极大地增加了IO的负担。

3、更新太频繁地字段不适合创建索引

当你为某个字段创建索引时候,如果再次更新这个字段数据时,数据库就会自动更新他的索引,所以当这个字段更新太频繁地时候那么就会不断的更新索引,性能的影响可想而知。大概被检索几十次才会更新一次的字段才比较符合建立索引的规范。而如果一个字段同一个时间段内被更新多次,那么果断不能为他建立索引。

4、不会出现在where条件中的字段不该建立索引

这个其实没什么好说的,不会用作查询条件的字段建立了索引也没用。

总结




MySQL建立字符集表的正确姿势mysql建表字符集
1.选择合适的字符集;在MySQL中,字符集可以分为单字节和多字节两种,单字节字符集比较常见,如GB2312,GBK,utf-8等,而多字节字符集可以chrome支持,比如utf-8mc等。在实际使用中,应根据用户的需求和站点的使用情况选择合适的字符集,以确保安全和正确的传输。2.创建字符集表;在MySQL中,可以通过...

如何在MYSQL数据库中新建一个数据库
1、安装:首先要安装MySQL,并且配置信息。创建一个快捷键到桌面上,双击软件,打开软件,界面如下图所示,什么都没有,我们要先创建一个连接。2、创建连接:文件→新建连接,如下图所示,会弹出一个对话框,信息好填写正确。3、测试连接:(1)在弹出的新建连接对话框中要填写好连接名、主机名、端口...

怎么用mysql建立数据库怎么用mysql建立数据库
C#mysql创建数据库?打开你的项目 在项目上右键,选择 在选项卡中搜索mysql 选择MySql.Data,在右侧勾选安装的项目后,点击按钮 相应的dll就安装到项目了 varmssb=newMySqlConnectionStringBuilder();MySqlConnectionsqlConnect=newMySqlConnection(mssb.ConnectionString);怎么创建company数据库?创建company数据库...

如何在MySQL中创建用户和授予权限
如何创建MySQL用户并授予权限?为了实现良好的安全性,需要为每个应用程序创建单独的用户帐户,而不是root用户访问数据库。这将确保应用程序无法访问其他应用程序的数据库。因此需要mysql管理员(root)权限来创建用户帐户并为数据库分配权限。对于信息,MySQL root帐户与系统root帐户不同,它们之间没有任何关系。...

怎样创建一个简单的mysql数据库
安装:首先要安装MySQL,并且配置信息。创建一个快捷键到桌面上,双击软件,打开软件,界面如下图所示,什么都没有,我们要先创建一个连接。2 创建连接:文件---》新建连接,如下图所示,会弹出一个对话框,信息好填写正确。3 测试连接:在弹出的新建连接对话框中要填写好连接名、主机名、端口、用户名...

怎么创建数据库(mysql怎么创建数据库)
创建数据库 选择开始菜单中→程序→【Management SQL Server 2008】→【SQL Server Management Studio】命令,打开【SQL Server Management Studio】窗口,并使用Windows或 SQL Server身份验证建立连接。在【对象资源管理器】窗口中展开服务器,然后选择【数据库】节点 右键单击【数据库】节点,从弹出来的快捷...

怎么样使用phpMyadmin创建一个Mysql数据库
怎么样使用phpMyadmin创建一个Mysql数据库?一共7个步骤: 1、 首先我们要登陆phpMyAdmin。点击控制面板管理工具Internet 信息服务管理器,弹出Internet 信息服务管理器窗口,在【默认网站】下找到phpMyAdmin网站的首页index.php,右键浏览,打开phpMyAdmin 怎么样使用phpMyadmin创建一个Mysql数据库?一共7个步骤:...

如何用MySQL建立数据库
3、然后进行测试连接,在弹出的新建连接对话框中要填写信息,单击“测试连接”,弹出“连接成功”即可。4、接着填写内容,在刚才创建的连接中,有很多的数据,右击连接选项按钮,新建数据库即可。5、接着可以新建一个数据表,这样就在MySQL建立了一个数据库和一个数据表,如图所示。

如何在命令行创建一个MySQL数据库
使用命令行创建MySql数据库,首先要登录MySql数据库系统 创建步骤如下:Windows操作系统下,开始——运行,打开"运行"对话框,输入cmd,点击“确定”即可进入DOS窗口,输入登录MySQL数据库命令 mysql -h 127.0.0.1 -u root -p 参数含义:mysql是登录数据库的命令,-h 后面跟服务器的IP,由于本示例...

AMD处理器上部署Mysql快速创建数据库环境AMD处理器装mysql
MySQL是一种流行的关系型数据库管理系统,它广泛被用于数据管理和处理。部署MySQL在AMD处理器上,可以快速创建一个高效和稳定的数据库环境,实现数据管理和分析的目的。第一步:下载和安装MySQL 在AMD处理器上创建MySQL数据库环境的第一步是下载和安装MySQL。可以从MySQL官方网站上下载最新版本的MySQL安装程序...

金川区19789074603: mysql数据库怎么建索引? -
储信赛若: MySQL数据库建立索引步骤:1、使用SQLPlus或者PLSQL登录MySQL数据库.2、执行语句create index indexname on table(col) tablespace tablespacename;其中 "indexname"为需要建立索引的索引名; "table"是需要建立索引的表; "col"为需要建立索引的字段列; ”tablespacename“为建立索引存放的空间(如果不需要制定表空间则使用“create index indexname on table(col)”).

金川区19789074603: mysql 如何创建索引 -
储信赛若: 1.添加PRIMARY KEY(主键索引) mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 2.添加UNIQUE(唯一索引) mysql>ALTER TABLE `table_name` ADD UNIQUE ( `column` ) 3.添加INDEX(普通索引) mysql>ALTER ...

金川区19789074603: mysql如何创建索引,能简单举个例子吗??? -
储信赛若: alter table tablename add ALTER TABLE `tablename` ADD INDEX (`字段名`)

金川区19789074603: 如何创建mysql索引以及索引的优缺点 -
储信赛若: 创建索引CREATE INDEX indexName ON tablename(username(length));为什么有索引,查询加快? 这是因为,创建索引可以大大提高系统的性能.第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性.第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因.第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义.第四,在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间.第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能.

金川区19789074603: MYSQL如何建立索引及如何使用索引? -
储信赛若: CREATE [UNIQUE] INDEX <index_name> ON <table_name>(字段 [ASC|DESC]); UNIQUE --确保所有的索引列中的值都是可以区分的.[ASC|DESC] --在列上按指定排序创建索引.(创建索引的准则:1.如果表里有几百行记录则可以对其创建索引(表里的记录行数越多索引的效果就越明显).2.不要试图对表创建两个或三个以上的索引.3.为频繁使用的行创建索引.) 示例 create index i_1 on emp(empno asc);

金川区19789074603: mysql索引是如何实现的 -
储信赛若: 索引的创建很简单,可以网上查下相关信息,在这里只是说下索引需要注意的地方,索引分为很多不同的类型,一般咱们说的是B_Tree索引,这里就只说B_Tree,如果是哈希索引,可以网上找相关资料..B_Tree适用于: 1.全值匹配 全值匹...

金川区19789074603: mysql 怎么建索引index -
储信赛若: 普通索引 添加INDEX ALTER TABLE `table_name` ADD INDEX index_name ( `column` ) 下面演示下给user表的name字段添加一个索引 主键索引 添加PRIMARY KEY ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 唯一索引 添加...

金川区19789074603: mysql的索引是什么啊?怎么建立啊,比如我有个表table,有两个列一个name,一个password. -
储信赛若: 把 mysql数据表 比喻为一本书,索引就相当于 书的目录 当这本书很大时,目录就很重要了,这样可以加快搜索速度 建立索引的方法 alter table add index(name);

金川区19789074603: 在数据表中索引有什么用,怎么建立索引 -
储信赛若: 索引用于快速找出在某个列中有一特定值的行,不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行,表越大,查询数据所花费的时间就越多.建立索引的操作步骤如下: 1、首先我们打开一个要操作的数据表,如下图所...

金川区19789074603: mysql怎样添加索引 -
储信赛若: 1.简单索引,优化查询(适用于大量数据) 单个字段索引(查询选择条件只有一个时,where后一个条件) create index index_name on table_name(`column`); alter table table_name add index index_name(`column`); 多重索引(查询选择条件...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网