zoukankan      html  css  js  c++  java
  • 数据库面试题

    1. 常见的索引有几种类型?

    1) Full Text:全文索引
    2) HASH:对于范围查询、排序和组合索引查询效率不高。
    3) BTREE:MySQL默认的索引类型
    4) RTREE:使用比较少。

    2. MySQL的存储引擎有哪些?它们有什么区别?

    1) 包括两种存储引擎:MyISAM和InnoDB
    2) 是否支持事务:InnoDB支持事务,但是MyISAM不支持事务。
    3) 关于锁:分为行级锁、表级锁和数据库锁。MyISAM支持表级锁(增、删、改的时候是排它锁,读取的时候是共享锁),不支持行级锁。InnoDB支持表级锁和行级锁。
    4) 存储空间占用情况:MyISAM空间占用比InnoDB要小。
    5) 查询速度:因为InnoDB用的是聚簇索引,查询速度比MyISAM快很多。

    3MySQL优化方式有哪些?

    1)选取最适用的字段属性。
        a. 如何知道字段长度是固定的,那就设为固定长度。
        b. 尽量把字段设置为NOT NULL,因为执行查询的时候,会比较NULL值。
        c.对于一些文本字段,能设成数值型的不要设为文本型。因为数值型的查询效率高于文本型。
    
    2)使用连接(join)去代替子查询。
    
    3)使用联合(UNION)来代替手动创建临时表。
        UNION是去重,出掉结果集中重复的记录。
        UNION ALL得到结果集中所有的记录,不去重。
    
    4) 事务:维护数据库数据的完整性和一致性
        银行转账情况:
        用户A转账给用户B
        更新账户A 账户余额-100
        更新账户B 账户余额+100
    
    5) 锁定表:解决方案,对数据库加乐观锁和悲观锁
    
    6)索引:索引应该建立在那些将用于JOIN、WHERE判断和ORDER BY排序的字段上。尽量不要对数据库中某个含有大量重复值的字段加索引。
    
    7)优化的查询语句
      a. 首先,最好是在相同类型的字段间进行比较。
      b. 其次,在建有索引的字段上尽量不要使用函数进行操作。
        Select * from userinfo where max(username)>0
      c. 在搜索字符型字段时,有时候会用like关键字和通配符,这种写法会牺牲性能。
      要采用like ‘user%’,而不是采用like ‘%user’或者like ‘%user%8) 采用外键来保证数据库数据的一致性
  • 相关阅读:
    SpringBoot 系列教程 web 篇之自定义请求匹配条件 RequestCondition
    SpringBoot 系列教程 JPA 错误姿势之环境配置问题
    react中constructor()和super()的具体含义以及如何使用
    原生js之canvas时钟组件
    js求和运算在可变参数的情况下ES3、ES5和ES6的写法区别
    好用的jquery.animateNumber.js数字动画插件
    sublime text3中设置Emmet输入标签自动闭合
    原生js移动端列表无缝间歇向上滚动
    原生js实现preAll和nextAll方法
    基于SwiperJs的H5/移动端下拉刷新上拉加载更多
  • 原文地址:https://www.cnblogs.com/ranyihang/p/14281438.html
Copyright © 2011-2022 走看看