数据库面试题

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) 采用外键来保证数据库数据的一致性

 

posted @ 2021-01-15 12:15  冉姑娘  阅读(86)  评论(0编辑  收藏  举报