01. 索引对数据库性能如此重要,如何使用它?
为数据库选择正确的索引是一项复杂的任务 。如果索引列较少,则需要的磁盘空间和维护开销 都较少 。如果在一个大表上创建了多种组合索引,索引文件也会膨胀很快 。
而另一方面,索引较多,可覆盖更多的查询 。可能需要试验若干不同的设计,才能找到最有效的索引 。可以添加、修改和删 除索引而不影响数据库架构或应用程序设计 。因此,应尝试多个不同的索引从而建立最优的索引 。
02. 尽量使用短索引
对字符串类型的字段进行索引,如果可能应该指定一个前缀长度 。例如,如果有一个 CHAR(255)的列,如果在前10个或30个字符内,多数值是惟一的,则不需要对整个列进行索引 。短索引不仅可以提高查询速度而且可以节省磁盘空间、减少I/O操作 。
03. MySQL存储过程和函数有什么区别?
在本质上它们都是存储程序 。函数只能通过return语句返回单个值或者表对象;而存储过程 不允许执行return,但是可以通过out参数返回多个值 。函数限制比较多,不能用临时表,只能用表变量,还有一些函数都不可用等等;而存储过程的限制相对就比较少 。函数可以嵌入在SQL 语句中使用,可以在SELECT语句中作为查询语句的一个部分调用;而存储过程一般是作为一个独立的部分来执行.
04. 存储过程中的代码可以改变吗?
目前,MySQL还不提供对已存在的存储过程代码的修改,如果必须要修改存储过程,必须使用DROP语句删除之后,再重新编写代码,或者创建一个新的存储过程 。
05. 存储过程中可以调用其他存储过程吗?
存储过程包含用户定义的SQL语句集合,可以使用CALL语句调用存储过程,当然在存储 过程中也可以使用CALL语句调用其他存储过程,但是不能使用DROP语句删除其他存储过程 。
06. 存储参数不要与数据表中的字段名相同
在定义存储过程参数列表时,应注意把参数名与数据库表中的字段名区别开来,否则将出 现无法预期的结果 。
07. 存储过程的参数可以使用中文吗?
一般情况下,可能会出现存储过程中传入中文参数的情况,例如某个存储过程根据用户的 名字查找该用户的信息,传入的参数值可能是中文 。这时需要在定义存储过程的时候,在后面加上character set gbk,不然调用存储过程使用中文参数会出错,比如定义userInfo存储过程,代码 如下:
CREATE PROCEDURE useInfo(IN u_name VARCHAR(50) character set gbk, OUT u_age INT)
08. MySQL中视图和表的区别以及联系?
两者的区别:
- 视图是已经编译好的SQL语句,是基于SQL语句的结果集的可视化的表,而表不是 。
- 视图没有实际的物理记录,而基本表有 。
- 表是内容,视图是窗口 。
- 表占用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时对它 进行修改,但视图只能用创建的语句来修改 。
- 视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL 语句的集合 。从安全的角度来说,视图可以防止用户接触数据表,因而用户不知道表结构 。
- 表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表 。
- 视图的建立和删除只影响视图本身,不影响对应的基本表 。
- 视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有记录) 都来自基本表,它依据基本表存在而存在 。一个视图可以对应一个基本表,也
- 可以对应多个基本 表 。视图是基本表的抽象和在逻辑意义上建立的新关系 。
09. 使用触发器时须特别注意
在使用触发器的时候需要注意,对于相同的表,相同的事件只能创建一个触发器,比如对 表account创建了一个BEFORE INSERT触发器,那么如果对表account再次创建一个BEFORE INSERT触发器,MySQL将会报错,此时,只可以在表account上创建AFTER INSERT或者 BEFORE UPDATE类型的触发器 。灵活的运用触发器将为操作省去很多麻烦 。
10. 及时删除不再需要的触发器
触发器定义之后,每次执行触发事件,都会激活触发器并执行触发器中的语句 。如果需求 发生变化,而触发器没有进行相应的改变或者删除,则触发器仍然会执行旧的语句,从而会影响 新的数据的完整性 。因此,要将不再使用的触发器及时删除 。
推荐阅读
- 详解如何通过SSH通道来访问MySQL IT生涯 2020-03-06 16:11:01
- 数据库8种优化方式
- mysql主从不同步的2种解决方法
- MySQL之Galera集群部署
- 如何centOS下mysql开启远程连接
- CentOS下如何完全卸载MySQL
- mysql数据库的一些安全配置
- Linux+Nginx+MySQL+PHP CentOS 8.1下搭建LEMP环境
- MySQL的基础语法
- 谷歌搜索引擎使用技巧大全