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

MySQL数据库中查询语句的优化

MySQL数据库中查询语句的优化
很多时候,基于MySQL的网站性能瓶颈经常出现在MySQL上,而MySQL中最常用的语句是查询语句。因此,MySQL数据库中查询语句的优化就显得非常重要:

1,确定是否不需要从MySQL数据库中请求的数据,如以下内容:

(1)查询不需要的数据,例如,您需要10个数据,但您已经选择了100个数据,而这些数据是有限制的。

(2)当多个表关联时返回到所有列

(3)总是取出所有列,选择*。去掉所有的列,这样优化器就不能完成索引覆盖和扫描的优化,同时也会给服务器带来额外的I/O、内存和CPU消耗。

(4)重复查询相同的数据,例如,在用户评论中,我们需要查询用户头部的URL。当用户多次评论时,他们会缓存数据,并在需要时从缓存中提取数据,这样性能会更好。

2,MySQL是否正在扫描额外记录

查询开销最简单度量的三个索引如下:响应时间、扫描行数、返回的行数

响应时间:服务时间和排队时间。服务时间是数据库真正处理这个查询的时间。排队时间是服务器由于等待某些资源而不能真正执行的查询。

返回的行数和行数:理想情况下要扫描的行数和返回的行数应该相同。

一般MySQL可以使用以下三种方法来应用条件记录,从好到坏:

(1)索引中使用的位置条件来过滤不匹配的记录,并在存储索引层中完成。

(2)索引覆盖扫描用于返回记录,从索引直接筛选不必要的记录,并返回在MySQL服务器级别上完成的命中结果,但不需要查询返回表中的记录。

(3)从数据表返回数据,然后在MySQL服务器级别过滤和完成不符合要求的记录。首先,我们需要从数据表中读取记录,然后进行筛选。

如果您发现查询需要扫描大量数据,但返回几行,您通常可以尝试以下技术:

(1)使用索引覆盖扫描将所有必需的列放入索引中,这样存储引擎就可以返回结果而不必返回表来获得相应行。

(2)更改库的结构,并使用单独的汇总表。

(3)重写这个复杂的查询

三.重构查询的方法

(1)复杂查询或一些简单查询:

可以将MySQL每秒的内存中的数百万个数据进行比较,扫描后,MySQL响应数据向客户机要慢得多,当其他条件相同时,用最少的查询肯定是好的,但有时大的查询分解成多个小查询是非常必要的。

(2)。

删除旧数据是一个很好的例子,在经常删除大量数据的情况下,如果一次性大的完整语句,可能会锁定一次大量数据,填满整个事务日志。耗尽系统资源,阻塞许多小而重要的查询。
MySQL > deletefrommessageswherecreated < date_sub(现在的(),interval3month);

重写:
rows_affected = 0;
做{
rows_affected = do_query(
deletefrommessageswherecreated < date_sub(现在的(),interval3month);

}

(3)分解关联查询:

它可以使缓存更高效,并且可以轻松地在应用程序中缓存单个数据。

在查询被分解后,执行单个查询可以减少锁的竞争。

在应用层,它更容易分割数据库,使其更容易实现高性能和高扩展性。

查询本身效率更高。

它可以减少冗余数据的查询,在应用层进行相关查询,也就是说,对于某些数据应用程序,只需要查询一次,而在数据库查询中,则可能需要反复访问一些数据。

适合现场:

(1)当应用程序可以轻松地缓存单个查询的结果时;

当数据可以分布到不同的MySQL服务器时;

(3)当()可以代替关联查询时使用;

在查询中使用数据表时。

相关文章

linux构建LDAP服务器的详细步骤

linux构建LDAP服务器的详细步骤

步骤,服务器,详细,电脑软件,linux,评论:本文主要介绍了用Linux构建LDAP服务器的详细步骤,您需要的朋友可以参考一下。 原来的LDAP服务器构建起来比较复杂,但它也是一个强制CE(客户端构建)。 1。OpenLDAP服务器安装软件包 2,检查LDAP模板文件的位…

Win8.1删除C薄通过Windows.old文件

Win8.1删除C薄通过Windows.old文件

文件,删除,电脑软件,Windows,点评:在Win8.1系统磁盘空间升级越来越少,这是因为系统会对旧系统的系统文件备份,就是我们常说的Windows.old文件夹,我们可以删除在C到薄薄的Windows.old文件 很多升级Win8.1系统使用者的Win8.1系统磁盘空间较少的升…

如何读取文件错误/蓝屏或死机安装W

如何读取文件错误/蓝屏或死机安装W

死机,蓝屏,错误,读取文件,安装,点评:Windows 7将是Windows XP的继任者。很多朋友发现有一些问题安装Win7时。例如,读取文件错误、蓝屏或死机、驱动器未自动安装等,将为您解决。 微软公司在2014表示,微软将取消对WindowsXP的所有技术支持,Windows…

iTune升级的Mac版本:iTunesExtras支

iTune升级的Mac版本:iTunesExtras支

升级,支持,版本,电影,电脑软件,北京新闻7月11日消息,苹果今天发布了一款iTunes 11.3版本的MA电脑,在高清电影支持中增加了iTunes的附加功能,同时,苹果还增加了6.2款新版苹果电视的iTunes附加功能,此外,苹果宣布这款功能将于今年秋天登陆iOS 8。 …

软件安装失败显示错误代码:-4026368

软件安装失败显示错误代码:-4026368

错误代码,显示,解决方案,安装失败,电脑软件,失败的苹果设备上安装的应用软件(iPhone,iPad,iTouch),显示错误代码:402636802。 参考解决方案: 请万能访问限制>设置栏检查是否安装应用程序和删除应用程序已被限制。如果限制完成,关闭限制。或确认该…

MySQL锁定表和无锁语句共享

MySQL锁定表和无锁语句共享

锁定,语句,无锁,电脑软件,MySQL,在页面级的典型代表是BDB引擎。 的表级的典型代表是MyISAM引擎,内存,和很久以前的。 该行级的典型代表是InnoDB引擎。 -我们实际应用中最常用的是行锁。 行级锁的优点如下: 1)当多个连接分别查询时,锁定状态被减…

PHP参考值实例详细解决方案学习

PHP参考值实例详细解决方案学习

学习,解决方案,参考值,实例,详细,什么是参考 在PHP意味着同一个变量内容的不同名称访问的参考。这不是一个指针的C,而是引用符号表的别名。请注意,在PHP中,变量名和变量的内容是不同的,所以相同的内容可以有不同的名字,最恰当的比喻是UNIX文件名…

PHP数组学习笔记

PHP数组学习笔记

数组,学习笔记,电脑软件,PHP,技术不好,应该有错误,请指出我会改正。 复制代码代码如下所示: 头('content-type:文本/ HTML;字符集= UTF-8); 回声'; 功能var_array(数组) { 回声'; var_dump(数组); 回声'; } 功能printr(数组) { 回声'; print_r(数组); 回声'…

日期查询语句

日期查询语句

查询语句,日期,电脑软件,使用date_format方法 SELECT * FROM ` ler_items `哪里date_format(posttime,% y % m)= '2013-03 注:日期必须使用' ',否则没有效果。 其他MySQL日期查找语句 MySQL >选择date_format(date_sub(CURDATE(),间隔7天),% % % d); +…

解析link_mysqlPHP版

解析link_mysqlPHP版

电脑软件,link_mysqlPHP,复制代码代码如下所示: str_sql_read美元=select count(*)为民从用户信息; 从美元的id是1 删除str_sql_del =; 美元link_mysql RES =(阅读 res_del美元= link_mysql(删除 echo $ res_del。; 而($行= mysql_fetch_assoc($ RES…

ChangInfoQuick的业务重构两种发展

ChangInfoQuick的业务重构两种发展

模式,业务,重构,移动互联网,两种,mdash;mdash;参观Chang InfoQuick执行董事兼总裁曾志勇 2014年6月26日是小微企业管理云服务与软件提供商Ernest InfoQuick信息技术股份有限公司(以下简称Chang InfoQuick )正式在香港主板上市(股票代码:1588)。这…

深入了解Linux系统进程

深入了解Linux系统进程

系统进程,电脑软件,Linux,注释:该过程是执行期间的程序和它所包含的所有资源的通用名称,包括虚拟处理器、虚拟空间、寄存器、堆栈、全局数据段等。 1。什么是过程 该过程是执行期间的程序和它所包含的所有资源的通用名称,包括虚拟处理器、虚…