`
ppxieppp
  • 浏览: 49137 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

MYSQL SQL书写优化建议,数据库

阅读更多
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

  连接(JOIN).. 之所以更有效率一些,是因为 Mysql不需要在内存中创建临时表来完成这个逻辑上的需要两个步骤的查询工作。

  3、使用联合(UNION)来代替手动创建的临时表

  Mysql 从 4.0 的版本开始支持 UNION 查询,它可以把需要使用临时表的两条或更多的 SELECT 查询合并的一个查询中。在客户端的查询会话结束的时候,临时表会被自动删除,从而保证数据库整齐、高效。使用 UNION 来创建查询的时候,我们只需要用 UNION作为关键字把多个 SELECT 语句连接起来就可以了,要注意的是所有 SELECT 语句中的字段数目要想同。下面的例子就演示了一个使用 UNION的查询。
SELECT Name, Phone FROM client
UNION
SELECT Name, BirthDate FROM author
UNION
SELECT Name, Supplier FROM product
分享到:
评论

相关推荐

    MySQL数据库查询优化

    MySQL中书写SQL连接查询语句时的优化技巧。 预计时间1小时 第8课 查询优化技术理论与MySQL实践(六)------数据库的约束规则与语义优化 数据库的参照完整性(CHECKt NULL等)。什么是语义优化? MySQL是否支持语义...

    mysql 千万级数据优化

    介绍一下海量数据库sql 优化,及书写sql 应该注意的事项。

    数据库操纵,SQL.pdf

    ③、MySQL 数据库的 SQL语句不区分大小写,关键字建议用大写。 ④、3种注释: 单行注释:(-- )一定要有空格 或 # 注释内容 多行注释:/*注释*/ 3、SQL 分类 1)DDL(Data Definition Language)数据库定义语言 ...

    mysql存储和提取文件

    本资源用C#语言实现: 1、与MySQL数据库的操作,包括连接、查询、修改、删除等; 2、保存文件(含可执行文件)到...5、MySqlHelpher操作类,完全由我本人实现,此类包含简洁的传参方法,极大方便含参sql语句的书写。

    三大数据库分页总结

    oracle mysql sqlserver 三大数据库在实际开发中的最常用分页书写!

    租房网,在线租房系统,内含启服教程和数据库sql文件,使用spring+jsp书写

    使用spring+jsp书写得一个在线租房系统,数据库为mysql,里面包含有具体的启服导入教程和数据库得sql文件,直接一键导入即可运行

    MySQL数据库开发规范V2.0.docx

    MySQL数据库开发规范,详细描述MySQL开发中需要注意的地方,SQL书写中需要注意的地方,以及表的设计使用规范。

    MySQL分表及分表后插入sql

    MySQL分表及分表后插入sql语句,表为订单表,可以参考一下

    SqlBuild

    使用到数据库软件(Oracle,SQlServer,MySql,HiRDB等等)且需要自己书写Sql文提交数据库的项目中,都可以使用本软件。 安装: 直接解压缩SqlBuild.zip文件。 本软件需要JDK1.4支持,而CSDN只能上传10M大小的软件...

    AMS v1.0 MySQL数据库管理系统.rar

    03) 高亮: 支持SQL高亮显示,有效防止书写SQL时错写库表名、字段名与及MYSQL相关关键字。 04) 扩展: 实现版块以JS扩展形式预载,数据库列表、数据请求发送等以JSON格式传输,无刷新快速呈现。 05) 易用: 支持版块...

    数据库技术规范.docx

    目录 数据库技术规范 4 1 建表规范 4 2 使用范围 4 3 概述 4 4 书写 4 5 注释 5 6 Oracle、MySQL、SQL Sever差异 5 7 优化 7 8 索引创建原则 7 9 函数、表达式使用 8 IN/OR子句使用 8 !=或操作符子句使用 8 不要对...

    MySQL存储过程的优化实例

    如果项目的存储过程较多,书写又没有一定的规范,将会影响以后的系统维护困难和大存储过程逻辑的难以理解,另外如果数据库的数据量大或者项目对存储过程的性能要求很,就会遇到优化的问题,否则速度有可能很慢,经过...

    SqlBuild 1.1

    作者(msn:boyman78x@hotmail.com) 使用场所:  使用到数据库软件(Oracle,SQlServer,MySql,HiRDB等等)且需要自己书写Sql文提交数据库的项目中,都可以使用本软件。 安装:  直接解压缩Sql...

    WEF:WEF基于c#数据实体框架,支持常规数据库的MSQSqlServer,MySql,Orcalce,Postgre等,并具有快速开发的能力,该工具在无SQL查询的Lambada等工具的开发经验下集成了大量数据集。表达式,添加和删除,实体克隆,表的批量和参数,事务,实体或存储过程的回合,SQL实体等

    使用方便,按照sql书写习惯编写C#.NET代码 高质量,接近手写Sql 体积小(不到200kb,仅一个dll) 完美支持Sql Server(2000至最新版),MySql,Oracle,Access,Sqlite等数据库 支持大量的Lambda表达式写法不需要像...

    第一章数据库的简介.docx

    常见的数据库管理软件:甲骨文的oracle,IBM的db2,sql server, Access,MySQL(开源,免费,跨平台). 数据库系统 数据库系统DBS(Data Base System,简称DBS)通常由软件、数据库和数据管理员组成。 软件主要包括...

    数据库MySQL基础知识点3

    day11: where条件之比较运算、逻辑运算 模糊查询(like) % 表示任意多个字符 _ 表示一个任意字符 范围查询(between and 、in) in 非连续的范围查询 between 起始 and 终值 连续范围的... 标准的SQL书写格式

    MYSQL管理系统(AMS) 1.5.0107.zip

    03) 高亮: 支持SQL高亮显示,有效防止书写SQL时错写库表名、字段名与及MYSQL相关关键字。 04) 扩展: 实现版块以JS扩展形式预载,数据库列表、数据请求发送等以JSON格式传输,无刷新快速呈现。 05) 易用: 支持版块...

    数据库.txt

    常见的数据库管理软件:甲骨文的oracle,IBM的db2,sql server, Access,MySQL(开源,免费,跨平台). 数据库系统 数据库系统DBS(Data Base System,简称DBS)通常由软件、数据库和数据管理员组成。 软件主要包括...

    医药销售管理系统数据库课程设计.docx

    (4)逻辑结构设计:将E-R图转换数据库的逻辑结构,并进行优化(此步骤可略); (5)物理结构设计:选定实施环境,确定系统数据库的存储结构和存取方法等; (6)数据实施和维护:用DBMS建立数据库结构,加载数据...

Global site tag (gtag.js) - Google Analytics