• 数据库面试题


    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) 采用外键来保证数据库数据的一致性
  • 相关阅读:
    BZOJ 1192 鬼谷子的钱袋
    BZOJ 1012 最大数maxnumber
    BZOJ 3209 花神的数论题
    线段树讲解(数据结构、C++)
    BZOJ 1087 互不侵犯king
    BZOJ 2732: [HNOI2012]射箭
    BZOJ 1043: [HAOI2008]下落的圆盘
    BZOJ 4451: [Cerc2015]Frightful Formula
    BZOJ 2888: 资源运输
    BZOJ 4800: [Ceoi2015]Ice Hockey World Championship
  • 原文地址:https://www.cnblogs.com/ranyihang/p/14281438.html
Copyright © 2020-2023  润新知