未毕业的“95后”大学生已月薪8K(3)
3.面试官:嗯,了解的还挺多。刚才听你说redis是非关系型数据库,你再说一下关系型的数据库都用过哪些吧?再说说在使用中SQL语句的优化都有哪些方案?
我:MySQL我用的比较多,SQL语句优化我也了解一些,我给您说说吧。(ps:Oracle用的不多,我就不说了;SQL语句优化我说的自己比较熟悉的,能说3-5条即可)
①应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。
② 应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from t where num is null
可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:
select id from t where num=0
用Where子句替换HAVING 子句 因为HAVING 只会在检索出所有记录之后才对结果集进行过滤 。