MySQL的故事——查询性能优化

这篇具有很好参考价值的文章主要介绍了MySQL的故事——查询性能优化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

查询性能优化


一、查询优化器的提示(hint)

HIGH_PRIORITY和LOW_PRIORITY
这个提示告诉MySQL,当多个语句同时访问某一个表时,哪些语句的优先级相对高些,哪些相对低些
DELAYED
这个提示对INSERT和REPLACE有效。MySQL会将使用该提示的语句立即返回给客户端,并将插入的行数据放入到缓冲区,然后在表空闲时批量将数据写入。
STRAIGHT_JOIN
这个提示可以放在SELECT关键字之后,也可以放在任何两个关联表的名字之间。第一个用法是让查询中的所有表按照在语句中出现的顺序进行关联。第二个用法则是固定其前后两个表的关联顺序。
SQL_SMALL_RESULT和SQL_BIG_RESULT
只对select语句有效。它们告诉优化器group by或者distinct查询如何使用临时表及排序。
SQL_BUFFER_RESULT
这个提示告诉优化器将查询结果放入一个临时表,然后尽可能快地释放表锁。
SQL_CACHE和SQL_NO_CACHE
告诉MySQL这个结果集是否应该缓存在查询缓存中。
SQL_CALC_FOUND_ROWS
它会让MySQL返回的结果集包含更多的信息。
FOR UPDATE和LOCK IN SHARE MODE
使用该提示会对符合查询条件的数据加行锁。
USE INDEX、IGNORE INDEX和FORCE INDEX
这几个提示会告诉优化器使用或者不使用哪些索引来查询记录(例如,在决定关联顺序的时候使用哪个索引。)
optimizer_search_depth
这个参数控制优化器在穷举执行计划时的限度。
optimizer_prune_level
该参数是默认打开的,这让优化器会根据需要扫描的行数来决定是否跳过某些执行计划。
optimizer_switch
这个变量包含了一些开启/关闭优化器特性的标志位。

二、优化特定类型的查询

优化count()查询
count()可以统计某个列的数值,也可以统计行数。
在统计列值时要求列是非空的(不统计NULL)。count(*)统计行数。
SELECT
COUNT(color = ‘blue’ OR NULL) AS blue,
COUNT(color = ‘red’ OR NULL) AS red
FROM
items

SELECT
sum(IF(color = ‘blue’, 1, 0)) AS blue,
sum(IF(color = ‘red’, 1, 0)) AS red
FROM
items

SELECT
sum(color = ‘blue’) AS blue,
sum(color = ‘red’) AS red
FROM
items

优化limit分页
偏移量非常大的时候,例如LIMIT 10000,20可能需要查询到10020条结果,然后返回20条。
可以使用书签记录上一次查询的位置,那么下次查询就会从书签位置开始扫描。
select * from user where id>10000 limit 10000,20

使用用户自定义变量
定义用户自定义变量:SET @one :=1;
SET@last_week :=CURRENT_DATE-INTERVAL 1 WEEK;
不过在编写SQL语句使用用户自定义变量时需要注意,在对变量赋值和读取变量可能是在查询的不同阶段,所以最好把变量的赋值和读取写在一起,或者要搞明白SQL语句的执行过程。文章来源地址https://www.toymoban.com/news/detail-705299.html


到了这里,关于MySQL的故事——查询性能优化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据库——MySQL高性能优化规范

    所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用 MySQL 保留(如果表名中包含查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过 32 个字符 临时库表必须以 tmp_为前缀并以日期为后缀,

    2024年02月11日
    浏览(104)
  • MySQL——性能优化与关系型数据库

    吞吐与延迟:有些结论是反直觉的,指导我们关注什么。 没有量化就没有改进:监控与度量指标,指导我们怎么去入手。 80/20原则:先优化性能瓶颈问题,指导我们如何去优化。 过早的优化是万恶之源:指导我们要选择优化的时机。 脱离场景谈性能都是耍流氓:指导我们对

    2024年02月01日
    浏览(50)
  • MySQL数据库IO性能优化方法论

    作者:禅与计算机程序设计艺术 随着互联网信息化的发展,网站日益繁荣,用户对网站访问速度要求越来越高。如何提升网站数据库IO性能从而实现快速响应?本文将从数据库的优化角度出发,结合实际应用场景,进行系统地剖析、归纳和总结,为读者提供一个系统性、完整

    2024年02月06日
    浏览(55)
  • 详解数据库分片,大幅提升Spring Boot查询MySQL性能

    微服务项目中通常包含各种服务。其中一项服务与存储用户相关的数据有关。我们使用Spring Boot作为后端,使用MySQL数据库。 随着用户基数的增长,服务性能受到了影响,延迟也上升了。由于只有一个数据库和一张表,许多查询和更新由于锁异常返回错误。此外,随着数据库

    2024年01月16日
    浏览(58)
  • MySQL数据库性能优化中常用的方法是什么?

    MySQL 是目前广泛使用的关系型 数据库 系统,随着数据量的不断增加和业务需求的提升,MySQL数据库性能优化已经成为开发人员和DBA必须面对的一个重要问题。 查询语句是MySQL数据库中最常用的操作之一,也是造成性能问题的主要原因之一。以下是一些常见的查询语句优化方法

    2024年01月19日
    浏览(53)
  • MySQL数据库索引优化指南:提升查询效率的利器

    本文将详细探讨MySQL数据库索引的概念、作用以及不同类型的索引,包括主键索引、唯一索引和普通索引。通过实际案例分析,我们将深入理解索引的工作原理,并提供实用的优化建议,帮助读者提升数据库性能。

    2024年02月09日
    浏览(91)
  • MySQL数据库的性能优化----(一步一个脚印)

    一、MySQL数据库的优化目标、基本原则: 1、优化目标: MySQL数据库是常见的两个瓶颈是CPU和I/O的瓶颈,无论是索引优化、还是表结构优化,参数优化,最后都可以归纳到这这两个分类中: (1)减少 I/O 次数: I/O是数据库最容易瓶颈的地方,大部分数据库操作中超过90%的时间

    2024年02月03日
    浏览(90)
  • 玩转MySQL数据库之SQL优化之慢查询

    本系列为:MySQL数据库详解,为千锋资深教学老师独家创作,致力于为大家讲解清晰MySQL数据库相关知识点,含有丰富的代码案例及讲解。如果感觉对大家有帮助的话,可以【关注】持续追更~ 文末有本文重点总结,技术类问题,也欢迎大家和我们沟通交流! 从今天开始本系列

    2024年02月06日
    浏览(96)
  • MySQL语句通过腾讯云数据库智能管家的性能与语法优化

    最近公司项目迁移至腾讯云,用的腾讯云MySQL服务器,MySQL负载一直很高,借助云管家优化了一部分SQL语句,提升了部分性能和释放了部分,MySQL内存占用      

    2024年02月15日
    浏览(59)
  • 掌握MySQL分库分表(一)数据库性能优化思路、分库分表优缺点

    不能⼀上来就说分库分表! 根据实际情况分析,两个角度思考:不分库分表、分库分表 软优化 数据库参数调优 分析慢查询SQL语句,分析执行计划,进行sql改写和程序改写 优化数据库索引结构 优化数据表结构优化 引入NOSQL和程序架构调整 硬优化 提升系统硬件(更快的IO、更

    2023年04月19日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包