全面解析MySQL数据库开发必备常识

  MySQL可以说是程序员应用最多的数据库,下面笔者为大家分享MySQL数据库开发当中的一些常识,存储引擎的选择,索引的设计及使用和大批量插入时SQL语句的优化。希望能对大家有帮助。

  存储引擎的选择

  声明:本文所针对的数据库版本都是MYSQL 5这里我主要针对两种存储引擎进行简单比较分别是MyISAM和InnoDB,首先比较下区别:

  1. MyISAM不支持事务,不支持外键,优点是访问速度高,批量插入速度快。假设大量的操作是select、insert,建议采用该存储引擎。但是在我的实际应用中,出现过批量插入过于频繁的时候,当数据量到达一定级别,出现表损坏的情况。

  2. InnoDB支持事务处理,但是相对于前者,处理效率低一些,并且其索引及数据也更占用磁盘空间。在存储一些关键数据,并需要对其进行事务操作的时候,我们可以选择innodb,当然,我认为他不应该是访问量太大的。

  索引的设计及使用

  没有索引的表是恐怖的,除非里头没多少数据,但是怎么设计索引是合理的?恐怕不是所有人都明白,这里简要分析下索引的设计及使用。

  1. 索引通常是设置where字句中的列,如果你设置select后的列,这是没有任何意义的。当然你需要对某列进行排序,order by后的列也是可以建成索引的。

  2. 使用唯一索引,主键就是最好的例子,假设你建的索引列,大量都是重复的,例如:性别,那么这样的索引并不会加快搜索速度。至于为什么,请大家自行了解索引的工作原理。

  3. 只要有可能,就要尽量限定索引的长度,例如索引列为 char(100),在其前10个字符大部分都是唯一的,请设置索引的长度为10,使用短索引可以加快查询速度,并节省硬盘空间。

  4. 索引的左前缀特性,联合索引实质上也是建立了多个的索引,那么是建立联合索引好还是分别建多个索引好呢?显然前者更好,利用左前缀特性,只要联合索引的最左的列被用到,那么索引都会被使用。

  5. 当然,最后要说的是,不要过度使用索引,索引越多,插入的速度越慢,尤其到数据量庞大时,同时,大量的索引将耗费很多硬盘空间,造成不必要的浪费。

时间: 2024-09-20 01:11:08

全面解析MySQL数据库开发必备常识的相关文章

MySQL数据库开发必备常识

2.关于like关键字 对于使用like的查询,需要注意的是只有列的%不在第一个字符索引才可能被使用.以下分别展示了使用like的查询,第一个是索引被使用的,第二个是索引未被使用的. 3.查看索引使用情况 使用以下命令: 如果索引正在工作,那么Handler_read_key 会很高,如果查询中出现Handler_read_rnd_next的值很高,则表明查询低效,索引的应用并不合理. 大批量插入时的SQL语句优化 在大量插入时,尤其是并发插入时,mysql往往要承受更高的负载,使用mysql

MySQL数据库开发中的外键与参照完整性

mysql|数据|数据库     参照完整性(Referential integrity)是数据库设计中一个重要的概念.在系统不同的列表中,当数据库所有参照合法或非合法关联时都会涉及到参照完整性.当参照完整性存在时,任何与不存在记录的关联将变得无效化,由此可防止用户出现各种错误,从而提供更为准确和实用的数据库. 参照完整性通常通过外键(foreign key)的使用而被广泛应用.长久以来,流行工具开源RDBMS MySQL并没有支持外键,原因是这种支持将会降低RDBMS的速度和性能.然而,由于很

【MYSQL数据库开发之二】MYSQL 基础语句的书写与一些数据库操作(创建使用数据库、表)!

本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/mysql/776.html 本篇Himi简单介绍一些MySQL数据库的基础操作: 注:mysql 语句对大小写不敏感,语句以分号";"标识语句结束: 1.   首先使用两个简单的查询语句: 查询当前版本:select version();                         查询当前日期:select current_d

解析MySQL数据库性能优化的六大技巧_Mysql

数据库表表面上存在索引和防错机制,然而一个简单的查询就会耗费很长时间.Web应用程序或许在开发环境中运行良好,但在产品环境中表现同样糟糕.如果你是个数据库管理员,你很有可能已经在某个阶段遇到上述情况.因此,本文将介绍对MySQL进行性能优化的技巧和窍门. 1.存储引擎的选择如果数据表需要事务处理,应该考虑使用InnoDB,因为它完全符合ACID特性.如果不需要事务处理,使用默认存储引擎MyISAM是比较明智的.并且不要尝试同时使用这两个存储引擎.思考一下:在一个事务处理中,一些数据表使用Inno

解析mysql数据库还原错误:(mysql Error Code: 1005 errno 121)

原因大致是主键必须是唯一的,也就是数据库里可能存在和现还原数据库有重复的地方,a restriction that Foreign Keys should be uniquely named throughout the database , 一个有效的办法就是将原来的数据库清除后再创建还原. 本人这回的原因是新装的mysql的ibdata1备份文件被我换成之前数据库的ibdata1备份文件了,本来想通过这方法来强制还原的,但是没做到,结果用备份sql文件还原以前数据的数据库时也出错,将被替换的

【MYSQL数据库开发之一】MAC下配置安装数据库-MYSQL

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/mysql/749.html 那么从今天开始陆续会更新数据库和Hibernate框架的博文,也是Himi学习的历程记录,希望大家能共同讨论和研究: OK,本篇简单介绍安装吧,首先到MySQL官方网站: http://www.mysql.com/downloads/ 如上图:点击DOWNLOAD ,进入如下界面,选择对应你的系统对应版本下载即可

【MYSQL数据库开发之四】MYSQL NULL值操作、批处理模式、常用查询的例子、计数行、模式匹配等

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/mysql/781.html 继续上一篇继续讲解MySQL的相关知识点:      1. NULL 值操作: NULL值可能令人感到奇怪直到你习惯它.概念上,NULL意味着"没有值"或"未知值",且它被看作与众不同的值.为了测试NULL,你不能使用算术比较 操作符例如=.<或!=.为了说明它,试试下列查询:

【MYSQL数据库开发之三】MYSQL 获得数据库和表的信息、日期计算、对表的删除修改等操作!

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/mysql/778.html 通过上一篇的介绍,大家可以创建自己的数据库和表以及插入表中数据等等,本章继续介绍更多的数据库的相关操作:   1.  查看所有表单数据:(这里我直接使用上一篇创建的himiDB数据库与其中的people表进行讲解,还不太熟悉的请移步到上一篇的博文)   步骤:(获取)显示所有已存在的数据库->使用himidb数据

解析MYSQL 数据库导入SQL 文件出现乱码的问题

导入数据时,如果目标数据库或表是UTF-8字符集的,而导入SQL中有中文,可能在最终结果中出现乱码,此时只需在导入的SQL文件第一行加入如下内容 即可. /*!40101 SET NAMES utf8 */;