网站做排名有用吗,朝阳区网站建设公司,网站开发文档怎么写,wordpress 文章模块1.查询尽量避免使用select * 1.1 增加磁盘开销#xff1a;数据库本质上是将记录存储在磁盘上#xff0c;查询操作就是一种进行磁盘IO的行为,我们查询的字段越多#xff0c;读取的内容也就越多#xff0c;对IO磁盘的开销也就会增大#xff0c;特别是某些字段#xff0c;如…1.查询尽量避免使用select * 1.1 增加磁盘开销数据库本质上是将记录存储在磁盘上查询操作就是一种进行磁盘IO的行为,我们查询的字段越多读取的内容也就越多对IO磁盘的开销也就会增大特别是某些字段如TEXT、MEDIUMTEXT或者BLOB等类型磁盘IO开销增加会更加明显1.2 加重网络时延数据每次都通过socket send buffer发送到客户端查询一次数据量不大如果一旦有人使用*将TEXT、MEDIUMTEXT或者BLOB 类型查出来数据量会成指数级上升网络传输的次数会增加时间也就会增加1.3 无法使用覆盖索引1.4 多表联合查询会变慢2.union all代替union unionunionunion: 对两个结果集进行并集操作, 不包括重复行,相当于distinct排重, 同时进行默认规则的排序; union all: 对两个结果集进行并集操作, 包括重复行, 结果全部显示, 不管是不是重复; 因此union all会比union多一个排除重复数据的操作排除重复数据需要遍历排序和比较耗时和CPU资源 3.小表驱动大表(用小的数据集去驱动(可理解为匹配)大的数据集) in子查询in适用于左边大表右边小表优先执行in里面的子查询语句然后再执行外面的语句in中值太多导致查询变慢 exists条件筛选exists适用于左边小表右边大表优先查询主查询语句再匹配exists条件 4.数据库的批量操作(批量插入、批量更新) 每次插入一条数据使用循环插入多条数据需要多次请求数据库会消耗更多性能一次插入多条数据如果数据太多数据库响应也会很慢建议批数据控制在500条以内 5.多用limit高效的分页 SELECT TOP 10 * FROM (SQL语句) AS T ORDER BY ID ASC 6.增量查询 全量查询是你要查询一个数据你需要输入完整的数据字符然后按回车程序才开始查询而增量查询只要你输入此数据的第一个字符或字母程序就将自动查询到它并使之高亮度显示等待你的选择7.用连接查询代替子查询 使用子查询可以一次性的完成很多逻辑上需要多个步骤才能完成的SQL操作同时也可以避免事务或者表锁死并且写起来也很容易。但是有些情况下子查询可以被更有效率的连接JOIN.. 替代join表的数量不应该超过3个left join关联时左边要用小表右边可以用大表能用inner join的地方尽量少用left join 8.控制索引的数量 索引能够显著的提升查询sql的性能但索引数量并非越多越好因为表中新增数据时需要同时为它创建索引而索引是需要额为的存储空间的而且还会有一定的性能消耗。单表索引数量应该控制在5个以内。 如果系统并发量不高表中的数据量也不多超过5个也可以不要超过太多就行。 对于高并发的系统单表索引数不要超过5个。能建联合索引就不要建单个索引。可以将部分查询功能迁移到其他类型的数据库中比如Elastic Search,HBase等在业务表中只需要建几个关键索引即可。 9.选择合理的字段类型 能用数字类型就不要字符串字符处理往往比数字要慢尽可能使用小的类型比如用bit存布尔值用tinyint存枚举值等。长度固定的字符串字段用char类型长度可变的字符串字段用varchar类型。金额字段用decimal避免精度丢失问题……10.提升group by 的效率 使用分组时先缩小数据范围再进行分组