电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 2151 人浏览分享

MySQL常见面试问题及答案分享

[复制链接]
2151 0

sql语句应该考虑哪些安全性?

答:

(1)防止sql注入,对特殊字符进行转义,过滤或者使用预编译的sql语句绑定变量。

(2)最小权限原则,特别是不要用root账户,为不同的类型的动作或者组建使用不同的账户。

(3)当sql运行出错时,不要把数据库返回的错误信息全部显示给用户,以防止泄漏服务器和数据库相关信息。

简单描述mysql中,索引,主键,唯一索引,联合索引的区别,对数据库的性能有什么影响。

答:

(1)索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),

它们包含着对数据表里所有记录的引用指针。

(2)普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。

(3)普通索引允许被索引的数据列包含重复的值,如果能确定某个数据列只包含彼此各不相同的值,

在为这个数据索引创建索引的时候就应该用关键字UNIQE把它定义为一个唯一所以,

唯一索引可以保证数据记录的唯一性。

(4)主键,一种特殊的唯一索引,在一张表中只能定义一个主键索引,

逐渐用于唯一标识一条记录,是用关键字PRIMARY KEY来创建。

(5)索引可以覆盖多个数据列,如像INDEX索引,这就是联合索引。

(6)索引可以极大的提高数据的查询速度,但是会降低插入删除更新表的速度,

因为在执行这些写操作时,还要操作索引文件。

一张表,里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记

录,再把Mysql重启,再insert一条记录,这条记录的ID是18还是15 ?

答:

(1)如果表的类型是MyISAM,那么是18。

因为MyISAM表会把自增主键的最大ID记录到数据文件里,

重启MySQL自增主键的最大ID也不会丢失。

(2)如果表的类型是InnoDB,那么是15。

InnoDB表只是把自增主键的最大ID记录到内存中,所以重启数据库

或者是对表进行OPTIMIZE操作,都会导致最大ID丢失。

请简述项目中优化sql语句执行效率的方法,从哪些方面。sql语句性能如何分析?

答:

(1)尽量选择较小的列

(2)将where中用的比较频繁的字段建立索引

(3)select子句中避免使用‘*’

(4)避免在索引列上使用计算,not,in和<>等操作

(5)当只需要一行数据的时候使用limit 1

(6)保证表单数据不超过200w,适时分割表

(7)针对查询较慢的语句,可以使用explain来分析该语句具体的执行情况 <

您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

关注

0

粉丝

9021

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.