问题阐述
MySQL 数据库是目前程序员应用较多的数据库之一,选择其作为数据库应掌握哪些基本常识?
专家解答
MySQL 数据库是目前比较流行的数据库之一,作为程序员应该掌握与其相关的一些常识,如存储引擎的选择、索引的设计和使用以及大批量插入时SQL 语句的优化等,可以帮助大家更好地使用MySQL 数据库。这里主要强调数据存储引擎的选择以及索引的设计和使用。
1.存储引擎的选择
(1)MyISAM 不支持事务,且不支持外键,优点是访问速度高,批量插入速度快。假设大量的操作由select、insert 组成,建议采用该存储引擎。但是在实际应用中,可能出现由于批量插入过于频繁而导致数据量到达一定级别,从而出现表损坏的情况。
(2)InnoDB 支持事务处理,但是相对于前者其处理效率稍低,并且其索引及数据也更占用磁盘空间。在存储一些关键数据并需要对其进行事务操作时,可以选择InnoDB。其前提是没有太大的访问量。
2.索引的设计和使用
没有索引的表会在查询过程中为用户带来不必要的麻烦,除非数据表中数据量小。下面简要分析索引的设计和使用。
(1)索引通常是设置where 子句中的列,如果用户设置select 后的列,这是没有任何意义的。当然,如果用户需要对某列进行排序,order by 后的列也是可以建成索引的。
(2)使用唯一索引,主键就是最好的例子,假设索引列大都是重复的,如性别,这样的索引并不会加快搜索速度。
(3)只要有可能,就要尽量限定索引的长度,例如,索引列为char(100),在其前10 个字符大部分都是唯一的,应设置索引的长度为10,使用短索引可以加快查询速度,并节省硬盘空间。
(4)索引的左前缀特性,联合索引实质上也是建立了多个索引,那么是建立联合索引好还是分别建多个索引好呢?显然前者更好,利用左前缀特性,只要联合索引的最左的列被用到,那么索引都将被使用。
(5)最后需要声明的是,不要过度使用索引,索引越多,插入的速度就越慢,尤其是在数据量庞大时,同时,大量的索引也将耗费很大的硬盘空间,造成不必要的浪费。
专家点评
存储引擎的选择与索引的设计及使用只是数据库开发常识中的一部分。为了使数据库系统能够发挥其最大功效,用户应选择最适合的存储引擎,并通过索引的设计来优化数据表的查询和提高整个数据库系统的性能。