`
ppxieppp
  • 浏览: 50698 次
  • 性别: 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

    MySQL优化是指对数据库的性能和效率进行优化,以提高数据库的查询速度和存储能力。常用的优化方法有索引优化、查询优化、存储过程优化等。 视图 视图是一种虚拟的表,基于基本表的查询结果所得。视图可以简化复杂的...

    汉字字典数据库(sql)

    《汉字字典数据库(sql)》是一个综合性的中文字符资源库,包含了丰富的汉字信息,旨在为学习、研究和应用汉字提供全面的数据支持。该数据库收录了20823个中文单字,涵盖了从基础到生僻的大量汉字,充分体现了汉字的...

    黑马程序员 数据库MYSQL.docx

    黑马程序员 MySQL 数据库知识点大全 1.1 数据库概述 * 数据库是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库...* MySQL 数据库的 SQL 语句不区分大小写,建议使用大写

    MySQL数据库应用与管理-第2版习题答案12.docx

    在MySQL中直接书写的SQL语句默认自动提交,而在事务中需要手动提交。 2. **解析**:√ 正确。`ROLLBACK`只能撤销未提交的事务。 3. **解析**:√ 正确。如果事务中的操作不合理,可以通过`ROLLBACK`来取消当前事务。...

    mysql数据库知识点总结.docx

    MySQL数据库知识点总结是关系型数据库管理系统(RDBMS)的核心概念,涵盖了数据库概念、发展历程、常见数据库、数据库结构、数据操作、SQL语句等知识点。 1. 数据库概念 数据库是用来存储和管理数据的仓库,具有...

    PHP执行SQL文件并将SQL文件导入到数据库

    需要注意的是,SQL文件中可能包含多个SQL语句,每个语句可能独立成行,也可能在一行中连续书写。因此,数组中的元素可能是一个或多个SQL语句。`explode()`函数能够根据分号将这些SQL语句分别放入数组的每个元素中。 ...

    数据库课设报告,报告书写方式,数据库创建

    数据库创建代码通常涉及SQL语言,例如在MySQL中创建一个简单的用户表的代码可能如下: ```sql CREATE TABLE Users ( UserID INT AUTO_INCREMENT PRIMARY KEY, Username VARCHAR(50) NOT NULL UNIQUE, Password ...

    MySQL分表及分表后插入sql

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

    SQL查询优化的策略与技巧.pdf

    这些工具包括查询优化器、性能监视器、索引分析工具等,它们可以帮助识别潜在的问题,提供改进建议,甚至自动优化SQL语句。 总的来说,SQL查询优化是一个涉及语法、逻辑、索引、性能监控等多个方面的复杂任务,需要...

    数据库01MySQL数据库开发基础篇-mysql数据库编程开发实训(基础篇)

    ### MySQL数据库开发基础知识点详解 ...3. **数据库优化**:通过索引、SQL优化、分库分表等方式提高性能。 通过以上内容的学习,可以全面掌握MySQL数据库的基础知识和技术要点,为实际应用打下坚实的基础。

    汉字笔画及UNicode数据库(简繁)mysql

    在MySQL环境中,可以通过导入这个SQL文件来创建一个包含汉字笔画信息的数据库表,方便进行查询和分析。例如,可以编写SQL语句来快速找出笔画数最多的汉字,或者查找特定笔顺的汉字,为各种汉字相关的应用提供数据...

    MySQL数据库基础操作

    MySQL数据库基础操作是数据库初学者入门的关键,它涵盖了数据库的基本概念、MySQL的启动与停止、客户端连接、SQL语法以及表的创建与管理等基础知识。在MySQL中,数据模型通常表现为DBMS(数据库管理系统)管理多个...

    mysql存储和提取文件

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

    MySQL教程.docx

    MySQL 是一个关系型数据库,使用 SQL 语言进行增删改查操作,目前属于 Oracle 旗下的产品。MySQL 数据库开源免费,能够跨平台,支持分布式,性能也不错,可以和 PHP、Java 等 Web 开发语言完美配合,非常适合中小型...

    数据库操纵,SQL.pdf

    1. SQL语句可以单行或跨多行书写,每条语句以分号`;`结束。 2. 为了增加可读性,可以使用空格和缩进。 3. 在MySQL中,SQL关键词不区分大小写,但通常推荐使用大写以提高可读性。 4. SQL提供三种注释方式:单行注释...

    java期末大作业,水果摊信息管理系统,mysql数据库,navicat实现数据可视化管理

    java期末大作业,水果摊信息管理系统,使用了mysql数据库,和navicat实现数据可视化管理,211大学,本人的期末大作业,期末93分,排专业第二名。本资源压缩包里含:完整代码、SQL数据库文件、开发文档三个文件,完整...

    MYSQL 汉子字典词典数据库合集

    MySQL是一种广泛使用的开源关系型数据库管理系统,以其高效、稳定和易用性著称。在这个“MYSQL汉字字典词典数据库合集”中,包含了两个关键的表:`word` 和 `words`,它们分别用于存储汉字字典和词典信息。 `word` ...

Global site tag (gtag.js) - Google Analytics