网站开发维护承担的法律责任,速购单微信小程序怎么做,做喷绘的图在哪个网站找,wordpress本地头像一、数据结构设计 正确的数据结构设计对数据库的性能是非常重要的。 在设计数据表时#xff0c;尽量遵循一下几点#xff1a;
将数据分解为合适的表#xff0c;每个表都应该有清晰定义的目的#xff0c;避免将过多的数据存储在单个表中。使用适当的数据类型来存储数据尽量遵循一下几点
将数据分解为合适的表每个表都应该有清晰定义的目的避免将过多的数据存储在单个表中。使用适当的数据类型来存储数据避免使用过大或不必要的数据类型以节省空间并提高读写效率。避免使用过多的NULL值尽量设计出不含NULL值的表结构有助于节省存储空间并提高查询效率。
1.1 创建数据表示例 用户数据表 create table users (id int auto_increment primary key,username varchar(50) not null,email varchar(100) not null,balance int,created_at timestamp default current_timestamp
);
二、索引的使用
2.1 什么是索引
首先我们要了解什么是索引、它是干嘛
索引是一种用于提高数据库查询性能的数据结构。你可以把它想象成一本书的目录可以提高查询的速度。也就是说当你在表的列上创建索引时数据库会根据这些列的数值快速定位到具体的行不需要整表的扫描。
2.2 常见的索引类型
普通索引不要求被索引的列的值是唯一的。唯一索引要求被索引的列的值是唯一的。主键索引要求被索引的列的值是唯一的且不允许为空。全文索引在本文数据中进行全文搜索 比如在某一段文章中查找出特定的关键字。
在使用索引时尽量遵循这几点
根据实际需求创建合适的索引通常对经常用于查询条件的列进行索引。避免在过多的列上使用索引这会增加写操作的开销还会占用额外的存储空间。定期检查删除不再使用的索引。
2.3 索引示例 添加索引 create index idx_username on users (username);
三、增加查询语句效率
我们在编写查询语句时尽量遵循以下几点
尽量不去使用 select * 而是明确列出需要的字段避免读取不必要的数据。谨慎使用子查询尽量优化为连接查询以及其他方式。合理使用join多表连接可能会引发性能为题使用合适的连接类型来优化查询效率。
3.1 优化查询示例 优化查询语句 select id, username from users where username zhangsan limit 1;
四、正确使用事务
4.1 什么是事务
它是一组sql查询的集合这些查询要么全部成功执行要么全部失败回滚。事务可以确保数据的完整性和唯一性。
4.2 事务的特性
事务具有以下特性
原子性事务中所有操作要么全部成功执行要么全部失败回滚。一致性事务开始之前和结束之后数据库的完整性约束没有被破坏数据始终保持一致状态。隔离性多个事物并发执行时每个事物都应当与其他事物相互隔离。持久性一旦事务进行提交它所做的修改会永久的保存在数据库中。
事务的使用尽量遵循一点
合理设置事务的范围避免事务持有锁时间过长导致性能问题。
4.3 事务的示例 使用事务 start transaction; 开始一个事务后续sql将视为一个整体要么全部执行要么全部失败。 commit; 提交事务如果前面的所有操作都执行成功那这些操作都将保存到数据库中。 start transaction;
insert into orders (user_id, total_amount) values (1, 100);
update users set balance balance - 100 where id 1;
commit;
五、分区表
5.1 什么是分区表
通过对数据表进行分区可以提高查询性能。
也就是说当我们有一个很庞大的数据进行处理时通过分区表可以减少查询所需的数据量减缓查询时间。
创建分区表尽量遵循一点
根据数据的时间范围进行分区可以加快查询速度针对历史性数据的查询。
5.2 分区表示例 创建分区表 partition by range (year(log_time)) 表示按照log_time字段进行分区。 partition p0 values less than(2022) 表示创建一个名为p0的分区用于存储log_time 小于2022的数据。 create table logs (id int auto_increment,log_time timestamp,message text,primary key(id, log_time)
) partition by range (year(log_time)) (partition p0 values less than (2022),partition p1 values less than (2023),partition p2 values less than (2024)
);