mysql中select和where子句优化的方法有哪些

55次阅读
没有评论

共计 1943 个字符,预计需要花费 5 分钟才能阅读完成。

自动写代码机器人,免费开通

丸趣 TV 小编给大家分享一下 mysql 中 select 和 where 子句优化的方法有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

数据库优化:

1. 可以在单个 SQL 语句,整个应用程序,单个数据库服务器或多个联网数据库服务器的级别进行优化
2. 数据库性能取决于数据库级别的几个因素,例如表,查询和配置设置
3. 在数据库级别进行优化, 在硬件级别进行优化, 平衡可移植性和性能
4. 合适的结构, 合适的数据类型; 执行频繁更新的应用程序大量表(少列); 分析大量数据的应用程序少量表(多列); 选择合适的存储引擎和索引;
5. 压缩适用于 InnoDB 表的各种工作负载,以及只读 MyISAM 表
6. 选择合适的锁定策略;InnoDB 存储引擎可以处理大多数锁定问题
7. 配置的主要内存区域是 InnoDB 缓冲池和 MyISAM 密钥缓存。
8. 优化 select 语句, 这方面技巧同样适用于其他带 where 的 delete 语句等, 在 where 子句的列上设置索引; 索引对于引用多个列如 join 和外键尤其重要

select where 子句优化:

1. 调整查询的结构, 例如函数调用, 为结果集中的每一行只调用一次, 为表中的每一行只调用一次
2. 减少查询中的全表扫描数
3. 定期使用 ANALYZE TABLE 语句使表统计信息保持最新
4. 了解特定于每个表的存储引擎的调优技术,索引技术和配置参数
5. 优化 InnoDB 表的单查询事务
6. 通过阅读 EXPLAIN 计划并调整索引,WHERE 子句,连接子句等来调查特定查询的内部详细信息
7. 调整 MySQL 用于缓存的内存区域的大小和属性。通过有效使用 InnoDB 缓冲池,MyISAM 密钥缓存和 MySQL 查询缓存
8.where 条件, 去掉不必要的括号, 恒定折叠, 恒定条件去除, 减少不必要的逻辑
9. 被索引使用的常量表达式只计算一次
10.count(*) 直接从表信息中查询; 当只有一张表时,not null 表达式也是这样
11. 如果不使用 GROUP BY 或聚合函数(COUNT(),MIN()等),HAVING 将与 WHERE 合并
12. 常量表, 只有一行或空表;where 子句作用在 primary key 或者 unique 索引上
13. 如果 ORDER BY 和 GROUP BY 子句中的所有列都来自同一个表, 则在连接时首选该表
14. 如果 order by 子句和 group by 子句不一样, 或来自不同的表, 则会创建临时表
15. 如果使用 SQL_SMALL_RESULT 修饰符,MySQL 将使用内存中的临时表
16.MySQL 甚至无需咨询数据文件即可只从索引中读取行
17. 在输出每一行之前,将跳过与 HAVING 子句不匹配的行

以下表被用作常量表:

SELECT * FROM t WHERE primary_key=1;
SELECT * FROM t1,t2 
WHERE t1.primary_key=1 AND t2.primary_key=t1.id;

以下查询运行速度非常快:

SELECT COUNT(*) FROM tbl_name;
SELECT MIN(key_part1),MAX(key_part1) FROM tbl_name;
SELECT MAX(key_part2) FROM tbl_name
 WHERE key_part1=constant;
SELECT ... FROM tbl_name
 ORDER BY key_part1,key_part2,... LIMIT 10;
SELECT ... FROM tbl_name
 ORDER BY key_part1 DESC, key_part2 DESC, ... LIMIT 10;

假设索引列是数值型, 以下查询仅用到了索引树:

SELECT key_part1,key_part2 FROM tbl_name WHERE key_part1=val;
SELECT COUNT(*) FROM tbl_name
 WHERE key_part1=val1 AND key_part2=val2;
 SELECT key_part2 FROM tbl_name GROUP BY key_part1;

以下查询使用索引按排序顺序取回数据, 不需要单独排序

SELECT ... FROM tbl_name
 ORDER BY key_part1,key_part2,... ;
SELECT ... FROM tbl_name
 ORDER BY key_part1 DESC, key_part2 DESC, ... ;

以上是“mysql 中 select 和 where 子句优化的方法有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!

向 AI 问一下细节

丸趣 TV 网 – 提供最优质的资源集合!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-18发表,共计1943字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)