美文网首页
知道数据库优化 走到哪里都不怕

知道数据库优化 走到哪里都不怕

作者: CarryLili | 来源:发表于2019-08-13 17:30 被阅读0次

前言:

数据库是Web应用至关重要的一个环节,其性能的优劣会影响整合Web应用,所以需要对数据库进化优化以提高使用性能。以下提供几点方法作为参考。

1 SQL查询优化

  • 避免全表扫描,应考虑在 where 及 order by 涉及的列上建立索引;

  • 查询时使用select明确指明所要查询的字段,避免使用select *的操作;

  • SQL语句尽量大写,如

      SELECT name FROM t WHERE id=1
    
    

    对于小写的sql语句,通常数据库在解析sql语句时,通常会先转换成大写再执行。

  • 尽量避免在 where 子句中使用!=或<>操作符, MySQL只有对以下操作符才使用索引:<,<=,=,>,>=,BETWEEN,IN,以及某些时候的LIKE;

      SELECT id FROM t WHERE name LIKE ‘abc%’
    
    
  • 对于模糊查询,如:

      SELECT id FROM t WHERE name LIKE ‘%abc%’
    
    

    或者

      SELECT id FROM t WHERE name LIKE ‘%abc’
    
    

    将导致全表扫描,应避免使用,若要提高效率,可以考虑全文检索;

  • 遵循最左原则,在where子句中写查询条件时把索引字段放在前面,如

      mobile为索引字段,name为非索引字段
      推荐
      SELECT ... FROM t WHERE mobile='13911111111' AND name='python'
      不推荐
      SELECT ... FROM t WHERE name='python' AND mobile='13911111111' 
    
      建立了复合索引 key(a, b, c)
      推荐
      SELECT ... FROM t WHERE a=... AND b=... AND c= ...
      SELECT ... FROM t WHERE a=... AND b=...
      SELECT ... FROM t WHERE a=...
      不推荐 (字段出现顺序不符合索引建立的顺序)
      SELECT ... FROM t WHERE b=... AND c=...
      SELECT ... FROM t WHERE b=... AND a=... AND c=...
      ...
    
    
  • 能使用关联查询解决的尽量不要使用子查询,如

      子查询
      SELECT article_id, title FROM t_article WHERE user_id IN (SELECT user_id FROM t_user  WHERE user_name IN ('itcast', 'itheima', 'python'))
    
      关联查询(推荐)
      SELECT b.article_id, b.title From t_user AS a INNER JOIN t_article AS b ON a.user_id=b.user_id WHERE a.user_name IN ('itcast', 'itheima', 'python');
    
    

    能不使用关联查询的尽量不要使用关联查询;

  • 不需要获取全表数据的时候,不要查询全表数据,使用LIMIT来限制数据。

2 数据库优化

关于表优化:

在进行表设计时,可适度增加冗余字段(反范式设计),减少JOIN操作;
多字段表可以进行垂直分表优化,多数据表可以进行水平分表优化;

关于SQL优化:

使用慢查询工具找出效率低下的SQL语句进行优化
对较频繁的作为查询条件的字段创建索引;唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件;更新非常频繁的字段不适合创建索引;
选择恰当的数据类型,如整型的选择;

其他优化:

对于强调快速读取的操作,可以考虑使用MyISAM数据库引擎;
构建缓存,减少数据库磁盘操作;
可以考虑结合使用内在型数据库,如Redis,进行混合存储。

相关文章

  • 知道数据库优化 走到哪里都不怕

    前言: 数据库是Web应用至关重要的一个环节,其性能的优劣会影响整合Web应用,所以需要对数据库进化优化以提高使用...

  • 7.当下就在神的国度,时刻保持着慈悲心,解脱心

    一行禅师著 《 你可以不怕死》 摘要: 1.真实的修行人不论走到哪里,都清楚地知道自己脚下所踩的正是神的国度。我没...

  • 天黑

    岁月,走到哪里 都带有你的微笑 熟悉如昨儿 岁月,走到哪里 都留有你的味道 迷人如昨儿 岁月,走到哪里 都生出你的...

  • 且把浮生,换做浅吟低唱

    我不知道自己的写作之路能够走到哪里,其实我也没有想过我要走到哪里。也许哪里都走不到,但是又有什么关系呢?因为,快乐...

  • 北大刚毕业,为什么女领导总让我加班?(小小说)

    不惹事,也不怕事,凭本事吃饭的人,自认为,走到哪里都自带光芒。 哈尔滨,大学毕业,刚分到报社上班,碰到这个女领导,...

  • zabbix优化之进阶版

    官网调优 1. 数据库优化 1.设置数据库分区优化,buffer优化,hash优化, 说明:数据库分区优化的优点:...

  • 只要有能力,走到哪里都不怕

    今天去一个部门办事,那里的主管曾和我在一个部门共事过,并担任过我的上级。办好工作业务,我和他聊了一会儿。同事对我两...

  • 再见,旧时光!(6)

    再见,旧时光!(目录) 后来无论走到哪里,俞沁都把那块木板挂在背包上,按她的道理就是“有你罩着我,我就不怕了”...

  • MySQL优化

    MySQL优化(一)——哪些因素影响了数据库性能 所谓知己知彼,百战不殆。既然要优化数据库,我们就首先要知道,优化...

  • 都是手机若得…

    在今天手机不离手的人太多了,没有手机好像都没法活似的。 有了手机走到哪里都不怕,没有手机好像什么都干不了似的。 有...

网友评论

      本文标题:知道数据库优化 走到哪里都不怕

      本文链接:https://www.haomeiwen.com/subject/rdbbjctx.html