

让缓存更高效。在应用程序中,可以很方便地缓存单表查询结果对应的结果对象,便于后续任何时候可以直接从结果对象中获取数据。
分解查询后,执行单个查询可以减少表锁的竞争。
在程序应用层做关联,可以更容易对数据库进行拆分,更容易做到高性能和可扩展。
单表查询效率高于多表复杂查询。
减少冗余记录的查询。在程序应用层关联,意味着对于某条记录应用只需要查询一次,而在数据库中做关联查询,则可能需要重复地访问一部分数据记录。从这点来看,这样的重构还可能减少网络和内存的消耗。
EXPLAIN SELECT语句;
在平时写SQL时,养成好的习惯,多加留意,很大程度上就会避免一些SQL性能问题。汇总如下:
永远为每张表设置一个ID主键。 避免使用SELECT *。 为搜索字段建立索引。 在Join表的时候使用对应类型的列,并将其索引。 尽可能的使用NOT NULL。 越小的列会越快。 当只要一行数据时使用LIMIT 1。 操作符的优化,尽量不采用不利于索引的操作符,目的就是为了避免全表扫描。 1)in 和not in慎用,尽量用between代替in,用 not exists 代替 not in 2)is null和is not null慎用 3)!=或<>操作符能不用就不用,否则将使引擎放弃使用索引而进行全表扫描。 ……
关于查询缓存有如下参数可供配置:
query_cache_type 是否打开查询缓存。可以设置OFF、ON、DEMAND,DEMAND表示只有在查询语句中明确写入sql_cache的语句才放入查询缓存。 query_cache_size 查询缓存使用的总内存空间,单位是字节。这个值必须是1024的整倍数,否则实际分配的数据会和指定的大小有区别。 query_cache_min_res_unit 在查询缓存中分配内存块时的最小单位。 query_cache_limit 缓存的最大查询结果。如果查询结果大于这个值,则不会被缓存。因为查询缓存在数据生成的时候就开始尝试缓存数据,所以只有当结果全部返回后,MySQL才知道查询结果是否超出限制。

MySQL性能优化(一):MySQL架构与核心问题 MySQL性能优化(二):选择优化的数据类型 微服务架构下的核心话题 (二):微服务架构的设计原则和核心话题 微服务架构下的核心话题 (三):微服务架构的技术选型

喜欢就点个"在看"呗,留言、转发朋友圈
文章转载自程序猿技术大咖,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




