优化MySQL数据库性能的八大“妙手” (1)

转载 2006年06月23日 22:00:00

 1、选取最适用的字段属性

  MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小。例如,在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要的空间,甚至使用VARCHAR这种类型也是多余的,因为CHAR(6)就可以很好的完成任务了。同样的,如果可以的话,我们应该使用MEDIUMINT而不是BIGIN来定义整型字段。

  另外一个提高效率的方法是在可能的情况下,应该尽量把字段设置为NOT NULL,这样在将来执行查询的时候,数据库不用去比较NULL值。

  对于某些文本字段,例如“省份”或者“性别”,我们可以将它们定义为ENUM类型。因为在MySQL中,ENUM类型被当作数值型数据来处理,而数值型数据被处理起来的速度要比文本类型快得多。这样,我们又可以提高数据库的性能。

  
2、使用连接(JOIN)来代替子查询(Sub-Queries)

  MySQL从4.1开始支持SQL的子查询。这个技术可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中。例如,我们要将客户基本信息表中没有任何订单的客户删除掉,就可以利用子查询先从销售信息表中将所有发出订单的客户ID取出来,然后将结果传递给主查询,如下所示:

DELETE FROM customerinfo
WHERE CustomerID NOT in (SELECT CustomerID FROM salesinfo )

  使用子查询可以一次性的完成很多逻辑上需要多个步骤才能完成的SQL操作,同时也可以避免事务或者表锁死,并且写起来也很容易。但是,有些情况下,子查询可以被更有效率的连接(JOIN).. 替代。例如,假设我们要将所有没有订单记录的用户取出来,可以用下面这个查询完成:

SELECT * FROM customerinfo
WHERE CustomerID NOT in (SELECT CustomerID FROM salesinfo )

  如果使用连接(JOIN).. 来完成这个查询工作,速度将会快很多。尤其是当salesinfo表中对CustomerID建有索引的话,性能将会更好,查询如下:

SELECT * FROM customerinfo
LEFT JOIN salesinfoON customerinfo.CustomerID=salesinfo.
CustomerID
WHERE salesinfo.CustomerID IS NULL

优化MySQL数据库性能的八大“妙手”

本文探讨了提高MySQL 数据库性能的思路,并从8个方面给出了具体的解决方法。   1、选取最适用的字段属性   MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小...
  • xiaoxing1521025
  • xiaoxing1521025
  • 2014年07月14日 15:34
  • 337

【经典排序算法】八大排序对比总结

针对前面讨论的八大经典排序算法:冒泡排序、插入排序、选择排序、堆排序、归并排序、快速排序、希尔排序、桶排序。 关于各种什么时间复杂度,空间复杂度的对比总结,网上一大堆,别人也总结的很好,这里就不赘述了...
  • yeswenqian
  • yeswenqian
  • 2014年04月03日 20:52
  • 1536

ElasticSearch性能优化策略

一、服务器部署算法的基本思想 1、增加1-2台服务器,用于负载均衡节点 elasticSearch的配置文件中有2个参数:node.master和node.data。这两个...
  • mlljava1111
  • mlljava1111
  • 2016年04月21日 20:58
  • 685

Lucene底层原理和优化经验分享(2)-Lucene优化经验总结

系统优化遵从木桶原理:一只木桶能盛多少水,并不取决于最高的木板,而取决于最短的那块木板。Lucene优化也一样,找到性能瓶颈,找对解决方法,才能事半功倍,本文将从三方面阐述我们的Lucene优化经验:...
  • njpjsoftdev
  • njpjsoftdev
  • 2017年01月06日 09:21
  • 3917

优化Angular应用的性能

MVVM框架的性能,其实就取决于几个因素: 监控的个数数据变更检测与绑定的方式索引的性能数据的大小数据的结构 我们要优化Angular项目的性能,也需要从这几个方面入手。 1. 减少...
  • happyduoduo1
  • happyduoduo1
  • 2016年07月05日 14:38
  • 3502

Android开发性能优化总结(一)

安卓开发应用首先要讲究良好的用户体验,如果一款软件卡顿现象严重,不流畅,经常崩溃,那么将给用户带来极不良好的体验,从而损失用户。 在实际开发和学习中,我总结了一下关于安卓性能的优化,供大家参考交流。...
  • gs12software
  • gs12software
  • 2016年04月17日 16:04
  • 19756

MySQL性能优化的最佳21条经验

今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据...
  • kaka1121
  • kaka1121
  • 2016年11月29日 17:09
  • 3252

App性能优化浅谈

前言前段时间给公司的小伙伴们进行了关于app性能优化的技术分享,这里我稍微整理一下也给大家分享一下,关于性能优化这个话题很大,涉及面可以很广,也可以很深入,本人能力有限,不会给大家讲特别难懂,特别底层...
  • wwj_748
  • wwj_748
  • 2015年12月16日 20:04
  • 10685

web前端性能优化总结

转自:http://www.2cto.com/kf/201604/498725.html          网站的划分一般为二:前端和后台。我们可以理解成后台是用来实现网站的功能的,比如:实现用户注...
  • ma_hoking
  • ma_hoking
  • 2016年05月21日 22:26
  • 30329

Web性能优化方法

如何提高web性能? 1、减少HTTP请求 一般来说要减少http请求通常从两个方面下手:减少图片的请求、减少脚本文件与样式表的请求 图片的减少通常有两种方式:css sprites、内联图片、...
  • u013372487
  • u013372487
  • 2015年12月17日 11:31
  • 1912
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:优化MySQL数据库性能的八大“妙手” (1)
举报原因:
原因补充:

(最多只允许输入30个字)