数据库开发中索引的使用占了很重要的位置,好的索引会使数据库的读写效率加倍,烂的索引则会拖累整个系统甚至引发灾难。
索引分三类:
index ----普通的索引,数据可以重复
unique ----唯一索引,唯一索引,要求所有记录都唯一
primary key ----主键索引,也就是在唯一索引的基础上相应的列必须为主键
MySQL 中会对 <,<=,=,>,>=,BETWEEN,IN 以及不以% _ 开头的like 语句使用索引。
1、选择索引的数据类型
MySQL支持很多数据类型,选择合适的数据类型存储数据对性能有很大的影响。通常来说,可以遵循以下一些指导原则:
(1)越小的数据类型通常更好:越小的数据类型通常在磁盘、内存和CPU缓存中都需要更少的空间,处理起来更快。
(2)简单的数据类型更好:整型数据比起字符,处理开销更小,因为字符串的比较更复杂。在MySQL中,应该用内置的日期和时间数据类型,而不是用字符串来存储时间;以及用整型数据类型存储IP地址。
(3)尽量避免NULL:应该指定列为NOT NULL,除非你想存储NULL。在MySQL中,含有空值的列很难进行查询优化,因为它们使得索引、索引的统计信息以及比较运算更加复杂。你应该用0、一个特殊的值或者一个空串代替空值。
2、选择标识符
选择合适的标识符是非常重要的。选择时不仅应该考虑存储类型,而且应该考虑MySQL是怎样进行运算和比较的。一旦选定数据类型,应该保证所有相关的表都使用相同的数据类型。
(1) 整型:通常是作为标识符的最好选择,因为可以更快的处理,而且可以设置为AUTO_INCREMENT。
(2) 字符串:尽量避免使用字符串作为标识符,它们消耗更好的空间,处理起来也较慢。而且,通常来说,字符串都是随机的,所以它们在索引中的位置也是随机的,这会导致页面分裂、随机访问磁盘,聚簇索引分裂(对于使用聚簇索引的存储引擎)。
3、索引入门
对于任何DBMS,索引都是进行优化的最主要的因素。对于少量的数据,没有合适的索引影响不是很大,但是,当随着数据量的增加,性能会急剧下降。
如果对多列进行索引(组合索引),列的顺序非常重要,
MySQL仅能对索引最左边的前缀进行有效的查找。例如:
假设存在组合索引it1c1c2(c1,c2),查询语句select * from t1 where c1=1 and c2=2能够使用该索引。查询语句select * from t1 where c1=1也能够使用该索引。但是,查询语句select * from t1 where c2=2不能够使用该索引,因为没有组合索引的引导列,即,要想使用c2列进行查找,必需出现c1等于某值。
分享到:
相关推荐
### MySQL数据库工程师常见面试题详解 #### 问题1:为什么GROUP BY和ORDER BY会使查询变慢? GROUP BY 和 ORDER BY 操作通常会增加查询的复杂度,从而导致性能下降。这是因为这两种操作通常需要对查询结果进行额外...
同时,定期进行数据库维护,如清理无用的表和索引,优化数据结构,以及调整配置参数,都是保持MySQL高效运行的关键。 总之,“好用的mysql 64数据库”意味着在64位环境下充分利用MySQL的性能优势,结合有效的管理和...
摘要 面试时,交流有关mysql索引问题时,... 数据库的索引还能有其他实现吗 redis跳表是如何实现的 跳表和B+树,LSM树有和区别呢 解析 首先为什么要把mysql索引和redis跳表放在一起讨论呢,因为他们解决的都是同一种
接下来,我们谈谈MySQL,这是一个关系型数据库管理系统(RDBMS),以其高性能、高可靠性以及开源特性而闻名。MySQL被广泛应用于各种规模的Web应用,从小型个人博客到大型电子商务平台。它支持SQL标准,提供了丰富的...
首先,让我们来谈谈MySQL的安装。在不同的操作系统上,MySQL的安装方法有所不同。在Windows上,通常可以通过下载安装包并按照向导进行安装;在Linux系统中,可以使用包管理器如apt或yum进行安装;而在macOS上,可以...
1. 请说下你对 MySQL 架构的了解? 2. 一条 SQL 语句在数据库框架中的执行流程? 3. 数据库的三范式是什么? 4. char 和 varchar 的区别? 5. varchar(10) 和 varchar(20) 的区别? 6. 谈谈你对索引的理解? 7. 索引...
首先,我们来谈谈MySQL存储过程中的优化策略——使用临时表代替游标。游标在处理复杂查询和逐行操作时非常有用,但它们通常会带来性能问题,因为它们需要多次与数据库交互,每次交互都会增加系统的开销。相反,临时...
接下来,我们来谈谈如何在Windows上安装和配置MySQL 8.0.33: 1. **解压文件**:将"mysql-8.0.33-winx64.zip"解压到你希望安装的目录,通常选择一个不会被频繁修改的位置,如"C:\Program Files"。 2. **配置MySQL*...
在软件开发中,数据库设计是不可或缺的步骤,包括需求分析、概念模型设计(E-R图)、逻辑模型设计(表结构)和物理模型设计(索引、分区等)。良好的数据库设计可以优化性能,降低数据冗余,提高数据的一致性。 ...
在MySQL数据库中,Order by语句的使用频率是比较高的。但是众所周知,在使用这个语句时,往往会降低数据查询的性能。因为可能需要对数据库的记录进行重新排序。在这篇文章中,笔者就谈谈提高Order By语句查询效率的...
MySQL 5.7 版本对JSON格式的原生支持是数据库领域中的一个重要功能升级。在MySQL 5.7.7版本的labs中,InnoDB存储引擎首次引入了对JSON数据格式的支持。这意味着开发者能够使用JSON数据类型在InnoDB表中存储和检索...
总结来说,索引和视图都是提升MySQL数据库性能和数据管理的有效工具。索引优化了数据检索速度,而视图则提供了数据抽象和安全性。理解并正确运用这些概念,能显著提升数据库的效率和易用性。在实际应用中,应根据...
- 谈谈MySQL的慢查询日志和如何优化SQL语句。 4. **SQL Server面试题** - SQL Server中的T-SQL与Oracle的PL/SQL有何异同? - 什么是SQL Server的聚集索引和非聚集索引?它们在查询性能上的影响是什么? - 如何...
MySQL是世界上最受欢迎的开源关系型数据库管理系统之一,尤其在互联网行业中广泛应用。它的高效、稳定性和易用性使得它成为很多大型网站和应用的首选。在本文中,我们将深入探讨MySQL的一些核心概念、优化方法以及在...
接下来,我们谈谈MySQL,这是一个关系型数据库管理系统,广泛应用于Web应用程序。在音乐网站中,MySQL用于存储大量音乐数据,如歌曲ID、歌曲名、歌手、专辑、时长、格式等。同时,还可以设置用户表,存储用户信息,...
SQLyog是其中一款流行的可视化工具,它为MySQL数据库提供了一个直观的图形界面,使得数据库管理和操作变得更加简单。 在安装MySQL之前,确保你的操作系统支持并满足其最低系统要求。MySQL通常可以在各种操作系统上...
常见的数据库管理系统(DBMS)包括MySQL,它是开源且广泛使用的SQL数据库。SQL(Structured Query Language)是用于操作和管理关系数据库的标准编程语言,包括数据查询、数据操纵、数据定义和数据控制等四大功能。 ...
首先,我们来谈谈数据库索引优化。索引是提高数据库查询效率的关键,它类似于书的目录,使得数据检索更加迅速。在MySQL中,B树和哈希索引是最常见的类型。B树索引适用于范围查询和排序,而哈希索引则适合等值查找。...