MySQL查询优化,kalilinux教程淘宝

本文介绍了MySQL查询优化的各种方法,包括批量插入数据、ORDER BY和GROUP BY的优化,以及拆分表以提高查询效率。讨论了存储过程与触发器的区别,并详细解释了如何通过重置拆分、水平拆分等手段来管理大型数据库。同时,文章还提到了数据库优化的方向,如调整参数、使用索引、分库分表等。通过对数据表结构的分析,提出了一些数据库设计的反规范化策略,以平衡查询速度和数据完整性。
摘要由CSDN通过智能技术生成

mysql> optimize table t;

±------------------±---------±---------±------------------------------------------------------------------+

| Table | Op | Msg_type | Msg_text |

±------------------±---------±---------±------------------------------------------------------------------+

| common_mistakes.t | optimize | note | Table does not support optimize, doing recreate + analyze instead |

| common_mistakes.t | optimize | status | OK |

±------------------±---------±---------±------------------------------------------------------------------+

2 rows in set (0.04 sec)

对于innodb引擎的表,可以通过设置innodb_file_per_taable参数,设置InnoDb为独立表空间模式,这样每个数据库的每个表都会生成一个独立的idb文件,用于存储表的数据和索引,可以一定程度减少Innodb表的空间回收问题,另外,在删除大量数据后,Innodb表可以通过alter table但是不锈钢引擎方式来回收不用的空间

alter table payment enigine=innodb;

ANALYZE,CHECK,OPTIMIZE,ALTER TABLE执行期间都是对表进行锁定,因此要在数据库不频繁的时候执行相关的操作

拆分表

分区将数据在物理上分隔开,不同分区的数据可以制定保存在处于不同磁盘上的数据文件里。

这样,当对这个表进行查询时,只需要在表分区中进行扫描,而不必进行全表扫描,明显缩短了查询时间,

另外处于不同磁盘的分区也将对这个表的数据传输分散在不同的磁盘I/O,一个精心设置的分区可以将数据传输对磁盘I/O竞争均匀地分散开。

对数据量大的时时表可采取此方法。可按月自动建表分区。

存储过程与触发器的区别

==========================================================================

两者唯一的区别是触发器不能用EXECUTE语句调用,而是在用户执行Transact-SQL语句时自动触发(激活)执行。

触发器是在一个修改了指定表中的数据时执行的存储过程。

通常通过创建触发器来强制实现不同表中的逻辑相关数据的引用完整性和一致性。

触发器不同于存储过程,触发器主要是通过事件执行触发而被执行的,

存储过程可以通过存储过程名称名字而直接调用。

当对某一表进行诸如UPDATE、INSERT、DELETE这些操作时,SQLSERVER就会自动执行触发器所定义的SQL语句,从而确保对数据的处理必须符合这些SQL语句所定义的规则。

数据库优化方向

======================================================================

(1)、根据服务层面:配置my

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值