当前位置:首页 > 日记 > 正文

MySQL的优化方法

MySQL的优化方法
1,选择最适用的字段属性
MySQL可以很好的支持大数据的访问,但一般来说,数据库中的表的更小,更快的查询将被执行它。因此,创建一个表时,为了获得更好的性能,我们可以设置字段的宽度表中尽可能小。例如,定义拉链代码字段时,如果将其设置为char(255),明显增加了不必要的空间数据库。即使使用varchar是不必要的。因为char(字符)可以很好的完成任务。以同样的方式,如果可以的话,我们应该使用MEDIUMINT代替大整数字段定义。
另一种提高效率的方法是尽可能地将字段设置为null,以便在将来执行查询时,数据库不需要比较null值。
对于某些文本字段,如省或性别,我们可以将它们定义为枚举类型。因为在MySQL中,枚举类型被视为数值数据和数值数据的处理比文字快得多。在这种方式中,我们也可以提高数据库的性能。
2。使用连接(join)来代替子查询(子查询)
MySQL支持SQL查询从4.1.this技术可以使用SELECT语句来创建一个列的查询结果,然后用这个结果作为过滤条件在另一个查询。例如,如果我们想删除那些在客户基本信息表没有订单的客户,我们可以使用子查询从销售信息表中提取所有客户的ID,然后把结果主查询。
删除的地方不在(选择CustomerInfo CustomerID CustomerID从salesinfo)
使用子查询可以完成许多同时需要逻辑上许多步骤的SQL操作。同时,它还可以避免交易或表锁定,也很容易写。然而,在某些情况下,子查询可以通过更有效的连接(join)取代..例如,假设我们要拿出所有的用户谁没有订单记录,你可以用下面的查询做:
SELECT * FROM customerinfo,CustomerID没有(选择CustomerID从salesinfo)
如果连接(join)来完成这个查询的速度要快得多。特别是,当salesinfo表索引到CustomerID,性能会更好,而且查询如下:
SELECT * FROM customerinfo左连接salesinfoon customerinfo CustomerID = salesinfo。在salesinfo.customerid CustomerID是空的
连接(连接)更高效,因为MySQL不需要在内存中创建临时表来完成逻辑两步查询。
三.使用工会(工会)取代人工创建的临时表
MySQL支持从4版本的联合查询,可以将两个或两个以上的选择要在查询中使用临时表的查询。在客户的查询会话结束时,临时表会自动删除,以确保数据库的整洁和有效。当我们使用联盟创建查询,我们只需要使用联盟作为一个关键字连接多个SELECT语句。我们应该注意所有SELECT语句中的字段数。
选择的名字,从客户会选择手机的名字,出生日期从作者
联盟
从产品中选择名称、供应商
4。
尽管我们可以使用子查询(子查询),加入(加入)和联盟(联盟)创建各种查询,不是所有的数据库操作就可以完成,只有一个或几个SQL语句。更多的时候,一系列的报表需要完成某项工作,但在这种情况下,整个块的操作变得不确定当一个块中的语句是错误的。想象一下,在同一时间内插入一个相关表的数据,可能会出现这样的情况:第一次成功更新表事故发生后情况突然出现在二表数据库,使操作没有完成,这将导致数据是不完整的,甚至会破坏数据库中的数据。为了避免这种情况,应该使用一个交易,它的功能是,每个语句的语句块操作成功或失败。换句话说,它可以保持数据库中数据的一致性和完整性。事情开始与开始的关键字,并提交关键词结束。之间的SQL操作失败,那么回滚命令可以恢复数据库状态之前的开始。
开始;
插入salesinfo集CustomerID = 14;
更新库存集数量= 11
在'book项目=;
承诺;
事务的另一个重要作用是,当多个用户同时使用同一个数据源时,它可以使用锁定数据库的方式为用户提供一种安全的访问方式,以确保用户的操作不受其他用户的干扰。
5。锁表
虽然交易是一个很好的方式来维护数据库的完整性,因为它的排他性,它有时会影响数据库的性能,特别是在大型应用系统,交易执行时,数据库将被锁定,这样其他用户的请求只能等到交易结束。如果数据库系统只一些用户
事务的影响不会是一个大问题,但是如果同时有成千上万的用户访问数据库系统,例如访问电子商务网站,就会出现更严重的响应延迟。
事实上,在某些情况下我们可以通过锁定表来获得更好的性能。
锁定表库存写入
从库存中选择数量
whereitem = 'book;

更新库存集数量= 11
whereitem = 'book;
打开表
在这里,我们用SELECT语句取出初始数据,并通过一些计算更新表中的新值。包含写关键字的锁表语句可以确保在执行解锁表命令之前没有其他插入、更新或删除清单的访问权限。
6。使用外键
锁定表的方法可以保持数据的完整性,但它不保证数据的关联性,我们可以在这个时候使用外键。例如,外键可以保证每一个销售记录指向一个现有的客户。在这里,外键可以地图在CustomerInfo表CustomerID CustomerID在salesinfo表。没有任何记录合法CustomerID将不会被更新或插入salesinfo。
创建表customerinfo

CustomerID int不空,
主键(ID)
类型= InnoDB);
创建表salesinfo

salesid INT NOT NULL,
CustomerID int不空,
主键(CustomerID,salesid),
外键(ID)引用customerinfo
(ID)在deletecascade
类型= InnoDB);
注意参数删除实例级。此参数可以确保在CustomerInfo表客户记录被删除,在salesinfo表客户相关的所有记录也会被自动删除。如果你想在MySQL中使用外键,一定要记住,表的类型定义为交易安全表InnoDB类型当你创建表。这类型不是MySQL表的默认类型。定义方法是添加型= InnoDB来创建表的语句。如图所示。
7。利用指数
索引是提高数据库性能的常用方法。它使数据库服务器比没有索引的索引更快地检索特定行。尤其是当查询语句包含max(),min()和订货指令,性能提高更为明显。这场应该被索引吗一般来说,该指标应根据这些字段将用于连接,在判断,和秩序。在一个有大量重复值的索引数据库没有现场试。一个枚举类型字段,很多重复的值很可能。例如,省…场customerinfo,不利于建立索引等领域。相反,它也可能会降低数据库的性能,我们可以在创建表的同时创建适当的索引,或者在以后使用索引表或创建索引来创建索引。
全文索引和搜索的支持从版本3.23.23.full文本索引在MySQL的全文型指标,但它只能用于一台MyISAM型。对于一个大的数据库,将数据加载到一个表没有索引,然后使用ALTER TABLE或创建创建索引,将是非常快的但如果将数据加载到表的全文索引,执行过程会很慢。
8。优化查询语句
在大多数情况下,使用索引可以提高查询速度,但如果SQL语句使用不当,指标并不能发挥其应有的作用。以下是应该注意的几个方面。首先,最好是比较领域的同一类型之间的操作。在MySQL 3.23版本,这甚至是一个必要条件。例如,我们不能比较索引的整数字段具有bigint场;然而,作为一个特殊的情况下,我们可以比较他们的时候,CHAR型和VARCHAR类型字段的字段大小是一样的。其次,尽量不要使用函数来对索引字段操作。
例如,当使用yeae()对日期型字段功能,索引不会起作用。所以,下面两个查询的结果是一样的,但前者比后者要快得多。
SELECT * FROM命令在年(订单)<2001;
SELECT * FROM订单,订单<2001-01-01 ;
计算数值字段时也会出现同样的情况:
从库存中选择* 24 / 7 <;
从清单中选择*,金额<24×7;
上述两个查询并返回相同的结果,但以下查询将比以前快多了。第三、搜索字符字段时,我们有时会使用类似关键字和通配符,这是简单的,但在系统性能为代价的。例如,下面的查询将比较每一个表中的记录。
从书中选择*
其中名为mysql
但是,如果更改下面的查询,返回结果是相同的,但是速度要快得多。
从书中选择*
其中名称> =MySQL,名字 最后,要注意避免MySQL在查询中的自动类型转换,因为转换过程也使索引不起作用。

相关文章

oracle数据库中锁等待方法的快速检

oracle数据库中锁等待方法的快速检

等待,检测,方法,数据库中,快速,通常,在大型数据库系统中,为了保证数据的一致性和在数据库中操作数据,系统将相应地锁定数据。 当程序提交修改(提交)或回滚(回滚)时,锁定在只读锁和独占行级独占锁中,资源将被释放,允许其他用户操作。 但在某些情况下…

2019支付宝如何办理护照?附护照不用

2019支付宝如何办理护照?附护照不用

2019支付宝如何办理护照?附护照不用回老家办理方法介绍!,支付宝,办理,护照,登录,办理护照,程序,方法,点击,以前我们办理通行证、护照等,都是需要回到户口所在地办理的,而现在支付宝可以全国通办出入境证件,更加方便了。下面介绍支付宝办理护照流程。支付…

oracle列合并的实现

oracle列合并的实现

合并,电脑软件,oracle,在许多情况下,我们使用Oracle列合并,而Oracle提供了以下几种实现列合并的方法: 1。wmsys.wm_concat之前使用Oracle 10g: wmsys.wm_concat分开的领域与价值 选择ID,wm_concat(名称)从tab_name组ID; 两。使用sys_connect_by_…

一个过程,cygrunsrv.exe是cygrunsrv

一个过程,cygrunsrv.exe是cygrunsrv

过程,信息查询,电脑软件,exe,cygrunsrv,点评:cygrunsrv.exe是基于Windows的GNU工具使用Cygwin / Redhat 进程文件:cygrunsrv或cygrunsrv.exe 进程名称:Cygwin运行服务 过程类别:安全风险的过程 英文描述: cygrunsrv.exe是从Cygwin / Redhat提…

的过程,是mim.exe查询与MIM工艺是什

的过程,是mim.exe查询与MIM工艺是什

查询,过程,工艺,电脑软件,exe,评论:详细的介绍了mim.exe - MIM工艺 进程文件:MIM或mim.exe 进程名称:Musicmatch Jukebox的过程 过程类别:安全风险的过程 英文描述: Mim.exe是属于Musicmatch Jukebox软件。Musicmatch点唱机,Musicmatch,它也被称…

为什么要取消XP放弃WindowsXP的3个

为什么要取消XP放弃WindowsXP的3个

取消,理由,电脑软件,WindowsXP,XP,评论:虽然用户不愿意放弃XP,但微软的行动表明,对XP说再见可能是真的。 毫无疑问,Windows XP是历史上最成功的桌面操作系统,虽然XP已逐渐被Windows 7取代,但它仍占有22%的市场份额,位居第二。对于已经发布12年的操…

巧用WPS工具实现数据转换

巧用WPS工具实现数据转换

数据转换,工具,巧用,电脑软件,WPS,一般来说,人事部门要求新员工填写员工资料表,便于新员工的基本信息的了解。这些形态通常是类似于图1所示的表格,但人事管理员想要把这些形式的数据库,通常是一个很麻烦的事情。 图1员工数据卡 目前,WPS文本为…

在PS图象处理软件图像混合叠加

在PS图象处理软件图像混合叠加

混合,叠加,图像,图象,处理软件,核心提示:在广告设计中,图像的合成与叠加经常使用。事实上,实现的功能很简单:打开主图像,作为背景图。打开地图,然后选择crtl +、Crtl + C复制,回到主图像,crtl + V粘贴。有一个新的层,在这里… 在广告设计中,经常用到…

是desk98.exe病毒进程是desk98过程

是desk98.exe病毒进程是desk98过程

进程,过程,电脑软件,exe,点评:desk98.exe是ATI的hydravision桌面管理程序。用于设置多个显示器的显示 进程文件:desk98或desk98.exe 进程名称:ATI hydravision桌面管理器 过程类别:安全风险的过程 英文描述: desk98.exe是一个过程,属于ATIS hyd…

名片怎么做?附天天向商制作名片方法

名片怎么做?附天天向商制作名片方法

名片怎么做?附天天向商制作名片方法步骤,天天向商,步骤,方法,制作名片,模板,制作,编辑,点击,天天向商十分实用,不仅有海量模板,还能标签标记,马赛克等。而很多人想要用天天向商制作出好看的名片,还怎么弄呢?下面介绍天天向商制作名片方法步骤。1、若是想…

平面设计PS图象处理软件八招骗

平面设计PS图象处理软件八招骗

平面设计,图象,处理软件,电脑软件,PS,核心提示:A:当你需要快速隐藏工具栏和浮动面板时,在面板上依次单击关闭按钮,然后打开,非常方便。实际上,你可以同时按下键盘上的Shift和Tab键,这样浮动面板就会立即被隐藏,从屏幕上消失,然后… 一:当你需要快速隐…

在国美在线APP中取消订单的具体方

在国美在线APP中取消订单的具体方

在国美在线APP中取消订单的具体方法,国美在线,取消订单,本文是教大家在国美在线APP中取消订单的,想要了解的就一起来学习在国美在线APP中取消订单的具体方法吧,相信对大家一定会有所帮助的哦。在国美在线APP中取消订单的具体方法 1)打开国美在…