Mysql数据库常见试题
- 引用自http://blog.csdn.net/laoniyouxi123/article/details/51161157
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来分析该语句具体的执行情况
最新文章
- 通过mongodb客户端samus代码研究解决查询慢问题
- java中static作用详解
- Linux bash - 常用操作命令
- 我所了解的javaScript细节
- .equal与==的区别
- Java中的GC操作及相关概念
- USACO全部测试数据
- 一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库 RxJava,相当好
- Chrome 控制台不完全指南【转载】
- git配合tortoiseGit的基础使用
- android插件化-apkplug框架启动-02
- const放在函数前和函数后
- shell读取文件的每一行
- @Controller和@RestController源码解析
- [二] java8 函数式接口详解 函数接口详解 lambda表达式 匿名函数 方法引用使用含义 函数式接口实例 如何定义函数式接口
- centos6.5环境下的web项目mysql编码方式导致的中文乱码问题
- redis 版的 hello world
- dcoker 安装mysql和数据持久化
- 企业级搜索引擎Solr 第三章 索引数据(Indexing Data)[1] (转)
- IOS使用AVAudioPlayer播放mp3歌曲文件并监听来电打断
热门文章
- win10在文件夹下打开powershell
- docker--docker 的web可视化管理工具
- 在git bash 中配置git用户名和邮箱及查看配置信息
- P2672跳石头
- oracle系统视图SQL语句整理
- CyclicBarrier、CountDownLatch、Callable、FutureTask、thread.join() 、wait()、notify()、Condition
- Linux — 基础知识
- /cat/cpuinfo信息查看
- css兼容问题收集+部分效果收集+css重置
- mongodb导出导入数据