0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

常见的几种MySQL数据优化方式分享

454398 来源: Chinaunix 作者:专注的阿熊 2020-10-11 10:17 次阅读

选取最适合的字段属性

2、尽可能的把字段设置成NOT NULL,这样在执行查询的时候,数据库不用去比较NULL值。

使用连接(JOIN)来代替子查询是(sub-Queries)

例:将客户基本信息表中没有任何订单的客户删除掉

利用子查询先从销售信息表中将所有发出订单的客户ID取出,然后将结果传递给主查询。使用子查询可以一次性的完成很多逻辑上需要多个步骤才能完成的SQL操作,同时也可以避免事务或者表锁死,并且写起来也很容易。但是,在某些情况下,子查询可以被更有效率的连接(JOIN)替代。

SELECT * FROM customerinfo WHERE CustomerID NOT IN (SELECTC ustomerID FROM salesinfo)

SELECT * FROM customerinfo LEFT JOIN salesinfo ON customerinfo.CustomerID = salesinfo.CustomerID WHERE salesinfo.CustomerID ISNULL

Swift Code

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

Union查询可以把需要使用临时表的两条或者更多的select查询合并成一个查询中。在客户端的查询会话结束的时候,临时表会被自动删除,从而保证数据库的整齐、高效。使用union来创建查询的时候,只需要用union作为关键字把多个select语句连接起来就可以了(所有的select语句中的字段数目相同)

SELECT Name,BirthDate FROM author UNION

事务

BEGIN; INSERT INTO salesinfo SET CustomerID=14; UPDATE inventory SET Quantity=11 WHERE item=‘book’; COMMIT;

锁定表

LOCK TABLE inventory WRITE SELECT Quantity FROM inventory WHERE Item=‘book’;

UPDATE inventory SET Quantity=11 WHERE Item=‘book’; UNLOCKTABLES

使用外键

例如,外键可以保证每一条销售记录都指向某一个存在的客户。外键可以把customerinfo表中的CustomerID映射到salesinfo表中的CustomerID,任何的一条没有合法CustomerID的记录都不会被更新或者插入到salesinfo中。

NULL,PRIMARYKEY(CustomerID))TYPE=INNODB;

FOREIGNKEY(CustomerID) REFERENCES customerinfo(CustomerID) ON DELETE CASCADE)TYPE=INNODB;

使用索引

一般说来,索引应建立在那些将用于JOIN,WHERE判断和ORDERBY排序的字段上。尽量不要对数据库中某个含有大量重复的值的字段建立索引。对于一个ENUM类型的字段来说,出现大量重复值是很有可能的情况

优化查询语句

在相同类型的字段间进行比较的操作。

例如:在一个date类型的字段上使用yeae()函数时,将会使索引不能发挥应有的作用。

SELECT * FROM books WHERE name like“MySQL%”

最后,应该注意避免在查询中让MySQL进行自动类型转换,因为转换过程也会使索引变得不起作用。
编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • MySQL
    +关注

    关注

    1

    文章

    799

    浏览量

    26413
收藏 人收藏

    评论

    相关推荐

    0基础学Mysql:mysql入门视频教程!

    互联网行业的高速发展,各个中小企业的数据库存放的数据,也已经达到了一个相当高的数量级。学习目标:深入理解MySQL数据库的原理从硬件 系统 MySQ
    发表于 07-08 10:51

    mysql数据库设计步骤

    mysql数据库设计和优化
    发表于 05-13 11:00

    mysql数据优化方案

    MySQL千万级大表优化解决方案
    发表于 08-19 12:18

    mysql的查询优化

    mysql查询优化
    发表于 03-12 11:06

    MySQL优化之查询性能优化之查询优化器的局限性与提示

    MySQL优化三:查询性能优化之查询优化器的局限性与提示
    发表于 06-02 06:34

    MySQL索引使用优化和规范

    MySQL - 索引使用优化和规范
    发表于 06-15 16:01

    MySql5.6性能优化最佳实践

    MySql5.6性能优化最佳实践
    发表于 09-08 08:47 13次下载
    <b class='flag-5'>MySql</b>5.6性能<b class='flag-5'>优化</b>最佳实践

    MySQL数据库:理解MySQL的性能优化优化查询

    最近一直在为大家更新MySQL相关学习内容,可能有朋友不懂MySQL的重要性。在程序,语言,架构更新换代频繁的今天,MySQL 恐怕是大家使用最多的存储数据库了。由于
    的头像 发表于 07-02 17:18 3064次阅读
    <b class='flag-5'>MySQL</b><b class='flag-5'>数据</b>库:理解<b class='flag-5'>MySQL</b>的性能<b class='flag-5'>优化</b>、<b class='flag-5'>优化</b>查询

    盘点MySQL常见问题及解答

    MySQL常见问题及答案汇总,MySQL是一种开放源代码的关系型数据库管理系统。数据库按照数据
    的头像 发表于 01-03 15:25 2458次阅读

    如何优化MySQL百万数据的深分页问题

    我们日常做分页需求时,一般会用limit实现,但是当偏移量特别大的时候,查询效率就变得低下。本文将分四个方案,讨论如何优化MySQL百万数据的深分页问题,并附上最近优化生产慢SQL的实
    的头像 发表于 04-06 15:12 1856次阅读

    浅谈mysql自有方式采集获取监控数据

    那我们今天就介绍一下完全采用 mysql 自有方式采集获取监控数据,在单体下达到最快速、方便、损耗最小。
    的头像 发表于 05-18 10:04 485次阅读
    浅谈<b class='flag-5'>mysql</b>自有<b class='flag-5'>方式</b>采集获取监控<b class='flag-5'>数据</b>

    MySQL高级进阶:索引优化

    MySQL官方对于索引的定义:索引是帮助MySQL高效获取数据数据结构。
    的头像 发表于 06-11 11:13 549次阅读
    <b class='flag-5'>MySQL</b>高级进阶:索引<b class='flag-5'>优化</b>

    MySQL数据库管理与应用

    MySQL数据库管理与应用 MySQL是一种广泛使用的关系型数据库管理系统,被认为是最流行和最常见的开源
    的头像 发表于 08-28 17:15 929次阅读

    mysql主从复制主要有几种模式

    MySQL主从复制是MySQL数据库中常用的一种数据复制方式,用于实现数据的备份、负载均衡、故障
    的头像 发表于 11-16 14:15 1128次阅读

    MySQL性能优化方法

    MySQL 性能优化是一项关键的任务,可以提高数据库的运行速度和效率。以下是一些优化方法,包括具体代码和详细优化方案。
    的头像 发表于 11-22 09:59 541次阅读