在大家学习java的时候,数据库方面的知识是必须要学会的,因为在实际实操中经常会遇到,并且去面试java也是必考,那今天我们就给大家分享一些数据库优化方面的面试题。
1、说说对SQL语句优化有哪些方法?(选择几条)
(1)Where子句中:where表之间的连接必须写在其他Where条件之前,那些可以过滤掉最大数量记录的条件必须写在Where子句的末尾.HAVING最后。
(2)用EXISTS替代IN、用NOT EXISTS替代NOT IN。
(3) 避免在索引列上使用计算。
(4)避免在索引列上使用IS NULL和IS NOT NULL。
(5)对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
(6)应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描。
(7)应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描。
2、MySQL如何优化DISTINCT?
DISTINCT在所有列上转换为GROUP BY,并与ORDER BY子句结合使用。
SELECT DISTINCT t1.a FROM t1,t2 where t1.a=t2.a;
3、key和index的区别是什么?
key是数据库的物理结构,它包含两层意义和作用,一是约束(偏 重于约束和规范数据库的结构完整性) ,二是索引(辅助查询 用的)。包括primary key, unique key, foreign key等。
index是数据库的物理结构,它只是辅助查询的,它创建时会在另外的表空间(mysql中的innodb表空间) 以-个类似目录的结 构存储。索引要分类的话,分为前缀索引、全文本索引等;
4、Mysql 中MyISAM和InnoDB的区别有哪些?
InnoDB支持事务, MyISAM不支持;
InnoDB支持外键,而MylSAM不支持。对一个包含外键的InnoDB表转为MYISAM会失败;
InnoDB是聚集索引,数据文件是和索引绑在一起,必须要有主键,通过主键索引效率高。
InnoDB不保存 表的具体行数,执行select count(*) from table时需要全表扫描。
Innodb不支持全文索引,而MyISAM支持全文索引,查询效率上MyISAM要高;
这些相关面试题大家可以收藏起来,必要的时候拿出来看看,说不定面试还能考到原题哦!最后大家如果想要了解更多java面试题知识,敬请关注奇Q工具网。
推荐阅读: