一、sql优化原则:
- 使用EXPLAIN分析;
- 使用小结果集驱动大结果集;
- 尽可能在索引中完成排序;
- 只取出需要的字段;
- 尽可能避免复杂的join和子查询。
二、sql优化
1、创建索引;
创建组合索引时,选择范围较小的字段放到前面。
2、分页:先分页查出主键,再使用inner join查询,如:
select id,name from user t inner join (select id from user u limit 1000000,100) a on t.id=a.id
3、当只查询一行数据时加上:
LIMIT 1
因为找到一条记录时就会返回,不会再查询下去。
4、使用join关联查询时,使用相同类型的字段进行匹配,这样可以用到索引。
5、保存IP地址时,把IP地址保存为UNSIGNED INT:
因为使用字符串存IP地址时设置数据类型和长度为: VARCHAR(15) ,占用30个字节,而如果用整形来存放,只需要4个字节,并且可以有定长的字段。而且,这还会带来查询上的优势,尤其是需要使用如下的WHERE条件:
IP between ip1 and ip2
6、时间字段类型选择,
datetime类型时间范围:1000-01-01 00:00:00 到 9999-12-31 23:59:59,占8个字节。
timestamp类型时间范围:1970-01-01 00:00:00 到 2037-12-31 23:59:59,占4个字节,具有初始化和自动更新特性。
`FUpdateDate` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP
误区:
1、where条件的顺序对性能有影响。---答案是没有影响,但建立索引的顺序有。
三、配置优化
MySQL参数的优化:内存中会为MySQL保留部分的缓冲区。这些缓冲区可以提高MySQL的速度。缓冲区的大小都是在MySQL的配置文件中进行设置的。
key_buffer_size:表示索引缓存的大小。这个值越大,使用索引进行查询的速度就越快
table_cache:表示同时打开的表的个数。这个值越大,能同时打开的表的个数就越多。这个值不是越大越好,因为同时打开的表过多会影响操作系统的性能。
query_cache_size:表示查询缓冲区的大小。使用查询缓存区可以提高查询的速度。这个方式只使用与修改操作少且经常执行相同的查询操作的情况;默认值是0.
Query_cache_type:表示查询缓存区的开启状态。0表示关闭,1表示开启。
Max_connections:表示数据库的最大连接数。这个连接数不是越大越好,因为连接会浪费内存的资源。
Sort_buffer_size:排序缓存区的大小,这个值越大,排序就越快。
Innodb_buffer_pool_size:表示InnoDB类型的表和索引的最大缓存。这个值越大,查询的速度就会越快。这个值太大了就会影响操作系统的性能。
四、事务优化
- 脏读:一个事务对数据进行了修改,但还没有提交到数据库中,这时另一个事务也访问了同一份数据。
- 不可重复读:在一个事务内多次读取同一份数据。在这个事务还没有结束时,另一个事务也读取了这份数据。那么,在第一个事务读取数据之间,第二个事务对这个数据进行了修改,这个时候第一个事务两次读取的数据就可以不一样。这样就发生了一个事务内两次读取的数据不一样,即不可重复读。
- 幻读:
相关推荐
以下是一份详细的MySQL优化笔记,涵盖了多个方面: 一、查询优化 1. 使用索引:为经常用于搜索的列创建索引可以显著加快查询速度。B树和哈希索引是最常见的类型,适用于不同的查询场景。 2. 避免全表扫描:尽量使用...
mysql慢可能是配置不对,阅读一下这个可能对你有帮助 ...对于Discuz!... 下面我们了解一下MySQL优化的一些基础,MySQL的优化我分为两个部分,一是服务器物理硬件的优化,二是MySQL自身(my.cnf)的优化。
以下将详细介绍MySQL优化的各个方面,并结合提供的文件名进行推测,尽管没有实际内容,但我们可以根据文件名来讨论可能涉及的主题。 1. **索引优化**:`mysql_rel.sql`可能包含SQL脚本,其中创建表结构和数据的关系...
在进行MySQL优化时,我们需要对数据库进行深入分析,以便找到性能瓶颈并进行相应的调整。优化可以分为三个主要部分:优化概述、查询与索引优化分析以及配置优化。 首先,在优化概述部分,了解MySQL数据库常见瓶颈是...
在"MySQL优化.rar"这个压缩包中,我们很显然会接触到关于MySQL数据库优化的详细内容,这包括但不限于查询优化、索引优化、存储引擎选择、架构设计等多个方面。 首先,查询优化是MySQL性能提升的关键步骤。通过对SQL...
为什么要开发这个MySQL 优化工具(Why) “一键优化”功能,可以优化本地/远程需要优化的机器,将繁琐的优化工作“傻瓜”式操作 根据您的业务需求Step By Step优化的MySQL服务器参数,起到指引的作用,简化用户...
以下是一些深入浅出的MySQL优化策略: 1. 选择合适的字段属性: 在设计数据库表时,应尽可能减小字段宽度,以减少存储空间和查询时间。例如,邮政编码字段只需设定为CHAR(6)即可,无需使用VARCHAR或更大的类型。...
MySQL优化是数据库管理中至关重要的环节,它涉及到提升查询性能、降低资源消耗,从而提高整个系统的响应速度和服务质量。MySQL自带的慢查询日志(slow query log)是进行优化的重要工具之一,它记录了执行时间超过预设...
MySQL 优化方法主要涵盖...总之,MySQL优化涉及多个层面,包括合理选择存储引擎、优化字段类型、建立合适索引以及编写高效的SQL语句。每个环节都对数据库性能有着直接影响,需要根据实际业务需求进行综合考虑和调整。
### MySQL优化知识点详解 #### 一、MySQL简介 MySQL是一款由MySQL AB公司开发的开源数据库管理系统,后来该公司被Sun Microsystems收购。MySQL因其简单、高效、可靠的特点,在IT行业中迅速崭露头角,成为最受欢迎...
21. MYSQL扩展/优化-提供更快的速度 22. MYSQL何时使用索引 23. MYSQL何时不使用索引 24. 学会使用EXPLAIN 25. 学会使用SHOW PROCESSLIST 26. 如何知晓MYSQL解决一条查询 27. MYSQL非常不错 28. MYSQL应避免...
我的mysql优化日记 我的mysql优化日记 我的mysql优化日记 我的mysql优化日记
MySQL优化是数据库管理中至关重要的一个环节,它旨在提高数据查询效率、降低系统资源消耗,以确保服务的稳定性和响应速度。"MySQL优化大揭秘"这个压缩包中的"SQL.pdf"很可能包含了关于如何优化MySQL数据库的详细教程...
mysql优化从以下几个方面介绍 mysql的架构 索引优化分析 查询截取分析 mysql锁机制 主从复制
MySQL优化是数据库管理中的关键环节,它涉及到性能提升、资源利用率优化以及系统稳定性的保障。这份"Mysql优化 PPT"可能会涵盖多个方面的内容,包括但不限于查询优化、索引策略、存储引擎选择、数据库架构设计、资源...
教程名称:大型门户网站核心技术-Mysql优化 课程目录:【】Mysql优化 资料【】Mysql优化01关键技术【】Mysql优化02表的设计【】Mysql优化03慢查询(一)【】Mysql优化04慢查询(二)【】Mysql优化05慢查询(三)【】Mysql...
总结来说,企业级MySQL优化是一个综合性的任务,涵盖安装配置、引擎选择、算法理解、集群构建和日常维护等多个环节。通过深入理解MySQL的工作机制和优化技巧,可以有效地提升数据库性能,保障企业的业务运行。