`
lyang0000
  • 浏览: 26234 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mysql的常用优化技巧

阅读更多

1.优化你的MySQL查询缓存
  在MySQL服务器上进行查询,可以启用高速查询缓存。让数据库引擎在后台悄悄的处理是提高性能的最有效方法之一。当同一个查询被执行多次时,如果结果是从缓存中提取,那是相当快的。
  但主要的问题是,它是那么容易被隐藏起来以至于我们大多数程序员会忽略它。在有些处理任务中,我们实际上是可以阻止查询缓存工作的。
// query cache does NOT work    
$r = mysql_query("SELECT username FROM user WHERE signup_date >= CURDATE()");        
// query cache works!    
$today = date("Y-m-d");   
$r = mysql_query("SELECT username FROM user WHERE signup_date >= '$today'");   
// query cache does NOT work $r = mysql_query("SELECT username FROM user WHERE signup_date >= CURDATE()");  
// query cache works!  $today = date("Y-m-d"); 
$r = mysql_query("SELECT username FROM user WHERE signup_date >= '$today'");

 

2.用EXPLAIN使你的SELECT查询更加清晰
  使用EXPLAIN关键字是另一个MySQL优化技巧,可以让你了解MySQL正在进行什么样的查询操作,这可以帮助你发现瓶颈的所在,并显示出查询或表结构在哪里出了问题。
  EXPLAIN查询的结果,可以告诉你那些索引正在被引用,表是如何被扫描和排序的等等。
  实现一个SELECT查询(最好是比较复杂的一个,带joins方式的),在里面添加上你的关键词解释,在这里我们可以使用phpMyAdmin,他会告诉你表中的结果。举例来说,假如当我在执行joins时,正忘记往一个索引中添加列,EXPLAIN能帮助我找到问题的所在。

 

3.利用LIMIT 1取得唯一行
  有时,当你要查询一张表是,你知道自己只需要看一行。你可能会去的一条十分独特的记录,或者只是刚好检查了任何存在的记录数,他们都满足了你的WHERE子句。
  在这种情况下,增加一个LIMIT 1会令你的查询更加有效。这样数据库引擎发现只有1后将停止扫描,而不是去扫描整个表或索引。

 

4. 索引中的检索字段
  索引不仅是主键或唯一键。如果你想搜索表中的任何列,你应该一直指向索引。

 

5.保证连接的索引是相同的类型
  如果应用程序中包含多个连接查询,你需要确保你链接的列在两边的表上都被索引。这会影响MySQL如何优化内部联接操作。
  此外,加入的列,必须是同一类型。例如,你加入一个DECIMAL列,而同时加入另一个表中的int列,MySQL将无法使用其中至少一个指标。即使字符编码必须同为字符串类型。

 

6.不要使用BY RAND()命令
  这是一个令很多新手程序员会掉进去的陷阱。你可能不知不觉中制造了一个可怕的平静。这个陷阱在你是用BY RAND()命令时就开始创建了。
  如果您真的需要随机显示你的结果,有很多更好的途径去实现。诚然这需要写更多的代码,但是能避免性能瓶颈的出现。问题在于,MySQL可能会为表中每一个独立的行执行BY RAND()命令(这会消耗处理器的处理能力),然后给你仅仅返回一行。

 

7.尽量避免SELECT *命令
  从表中读取越多的数据,查询会变得更慢。他增加了磁盘需要操作的时间,还是在数据库服务器与WEB服务器是独立分开的情况下。你将会经历非常漫长的网络延迟,仅仅是因为数据不必要的在服务器之间传输。
  始终指定你需要的列,这是一个非常良好的习惯。

 

8.从PROCEDURE ANALYSE()中获得建议
  PROCEDURE ANALYSE()可让MySQL的柱结构分析和表中的实际数据来给你一些建议。如果你的表中已经存在实际数据了,能为你的重大决策服务。

 

9.准备好的语句
  准备好的语句,可以从性能优化和安全两方面对大家有所帮助。
  准备好的语句在过滤已经绑定的变量默认情况下,能给应用程序以有效的保护,防止SQL注入攻击。当然你也可以手动过滤,不过由于大多数程序员健忘的性格,很难达到效果。
// create a prepared statement     
if ($stmt = $mysqli->prepare("SELECT username FROM user WHERE state=?")) {      
    // bind parameters     
    $stmt->bind_param("s", $state);      
    // execute     
    $stmt->execute();      
    // bind result variables     
    $stmt->bind_result($username);       
    // fetch value     
    $stmt->fetch();      
    printf("%s is from %s\n", $username, $state);       
    $stmt->close();     
}  

 

10.将IP地址存储为无符号整型
  许多程序员在创建一个VARCHAR(15)时并没有意识到他们可以将IP地址以整数形式来存储。当你有一个INT类型时,你只占用4个字节的空间,这是一个固定大小的领域。

 

 

分享到:
评论

相关推荐

    MySQL数据库优化SQL篇PPT课件.pptx

    MySQL数据库优化SQL篇PPT课件.pptx ...本PPT课件对MySQL数据库优化的重要知识点进行了详细的讲解,并提供了许多实用的优化技巧和方法。通过学习本PPT课件,可以提高数据库的性能和效率,提高开发效率和质量。

    mysql优化sql语句的优化(索引,常用小技巧.)

    - **查询优化技巧**: - 使用`EXPLAIN`来分析SQL执行计划,检查是否使用了索引。 - 避免在WHERE子句中使用复杂的表达式,如函数调用。 - 尽可能减少JOIN操作的数量。 - 使用覆盖索引(Covering Index),即索引...

    MySQL优化技巧大全.pdf

    "MySQL优化技巧大全.pdf" MySQL优化技巧大全.pdf是一份关于MySQL数据库优化的详细指南,涵盖了多种MySQL数据库优化技巧和方法。以下是对该文件的总结和分析: 1. 根据当前时间计算年龄 MySQL提供了多种方式来计算...

    mysql优化技巧

    ### MySQL优化技巧详解 #### 一、选择正确的存储引擎 MySQL提供了多种存储引擎,每种引擎都有其特点和适用场景。对于不同的业务需求,选择合适的存储引擎至关重要。 1. **InnoDB**: - **支持事务**:InnoDB是...

    MySQL技术内幕 SQL编程及优化.pdf

    2.3两个常用的优化技巧 2.4常用SQL优化 2.5常用SQL技巧 3.优化数据库对象 3.1优化表的数据类型逆规范化 3.2提高查询速度 4.锁问题 4.1MyISQM表锁 4.2InnoDB锁问题 5.优化MySQL Server 5.1MySQL体系结构...

    MySQL优化技巧.rar

    这份"MySQL优化技巧"的文档很可能会涵盖多个方面,包括查询优化、索引优化、存储引擎选择、架构设计以及服务器配置等方面。下面将详细介绍这些关键领域的优化策略。 1. **查询优化**:SQL查询是数据库性能的关键...

    MySQL语句优化的原则

    #### 三、其他优化技巧 1. **ORDER BY 和 GROUP BY 的优化**:任何一种索引都可以帮助提高`SELECT`语句的性能,尤其是在使用`ORDER BY`和`GROUP BY`时。为了进一步提高效率,可以在相关列上建立索引。 2. **减少列...

    高级MySQL性能优化

    3. 数据库模式设计和查询优化:深入分析数据库模式设计对性能的影响,包括合理的表结构设计和索引策略,以及针对复杂查询的优化技巧。 4. 服务器设置优化:探讨MySQL服务器的配置选项对性能的影响,如缓冲区大小、...

    mysql性能优化PHP高级开发工程师架构设计

    在PHP高级开发工程师的工作中,深入理解并掌握MySQL的性能优化技巧,能够显著提高应用程序的响应速度和用户体验。架构设计在此过程中也起到至关重要的作用,良好的架构可以预先避免性能瓶颈,为系统扩展性和稳定性...

    MySql高性能优化.md

    ### MySQL 高性能优化策略详解 #### 一、表的优化 ##### 1. 定长与变长分离 在数据库设计中,合理地将定长字段与变长字段分开存储,可以有效提升数据处理效率。例如,在一张表中,`id` 类型为 `INT`,占用 4 个...

    深入浅出MySQL数据库开发、优化与管理维护.doc

    本文档旨在深入浅出 MySQL 数据库开发、优化与管理维护的知识点,涵盖了 MySQL 数据库开发的基本概念、优化技巧和管理维护方法。 数据库开发篇 在本篇中,我们将学习 MySQL 数据库开发的基础知识,包括数据类型、...

    MySQL优化 实战视频课程

    #### 三、SQL语句优化技巧 ##### 3.1 查询优化方法 - **避免使用SELECT *:** 明确指定需要查询的列,减少不必要的数据传输。 - **使用EXPLAIN分析执行计划**:理解查询的实际执行过程,找出瓶颈所在。 - **限制...

    mysql查询优化之索引优化

    MySQL查询优化是数据库管理中的关键环节,特别是在大数据量的场景下,索引优化能显著提升查询性能。本文将深入探讨“mysql查询优化之索引优化”这一主题。 首先,了解索引的基本概念至关重要。索引是数据库为了快速...

    从零开始带你成为MySQL实战优化高手PDF117-127.zip

    这部分内容可能包括了查询优化技巧,如避免全表扫描、使用合适的JOIN类型、合理利用子查询、避免在WHERE子句中使用函数等。同时,理解执行计划是优化SQL的关键,学会使用EXPLAIN分析查询执行过程,可以有效找出性能...

    mysql数据库设计及优化技巧

    数据库是web网站的性能瓶颈所在,掌握常用的性能优化技巧,可以有效的预防和解决网站卡顿问题。

    Mysql底层原理与优化技巧

    了解其底层原理并掌握优化技巧对于提升系统性能至关重要。本篇将深入探讨MySQL的几个关键方面,包括存储引擎、索引机制、查询优化以及性能监控。 首先,MySQL的存储引擎是其核心组成部分,常见的有InnoDB和MyISAM。...

    MySQL性能优化.pdf

    - **实践经验**:理论知识结合实际案例的学习方式可以帮助更好地理解和掌握MySQL性能优化技巧。 综上所述,MySQL性能优化是一项综合性强、实践性强的工作,需要技术人员具备扎实的理论基础以及丰富的实战经验。通过...

Global site tag (gtag.js) - Google Analytics