建索引的几个原则
1.最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。
2.=和in可以乱序,比如a = 1 and b = 2 and c = 3 建立(a,b,c)索引可以任意顺序,mysql的查询优化器会帮你优化成索引可以识别的形式
3.尽量选择区分度高的列作为索引,区分度的公式是count(distinct col)/count(*),表示字段不重复的比例,比例越大我们扫描的记录数越少,唯一键的区分度是1,而一些状态、性别字段可能在大数据面前区分度就是0,那可能有人会问,这个比例有什么经验值吗?使用场景不同,这个值也很难确定,一般需要join的字段我们都要求是0.1以上,即平均1条扫描10条记录
4.索引列不能参与计算,保持列“干净”,比如from_unixtime(create_time) = ’2014-05-29’就不能使用到索引,原因很简单,b+树中存的都是数据表中的字段值,但进行检索时,需要把所有元素都应用函数才能比较,显然成本太大。所以语句应该写成create_time = unix_timestamp(’2014-05-29’);
5.尽量的扩展索引,不要新建索引。比如表中已经有a的索引,现在要加(a,b)的索引,那么只需要修改原来的索引即可
相关推荐
本文将详细介绍数据库创建索引的原则、分类、创建方法、管理和优化等方面的知识点。 索引的概念和优点 ---------------- 索引是数据库表中一个或多个列的值的数据结构,用于快速定位和检索数据。创建索引可以提高...
### Oracle 创建索引的基本规则 在Oracle数据库管理中,创建合适的索引对于提高查询效率、减少数据处理时间具有重要作用。本文将围绕Oracle创建索引的基本规则进行深入探讨,旨在帮助读者更好地理解如何根据不同的...
### 创建索引的作用及其利弊分析 在数据库管理与优化领域,索引是提升查询效率的重要工具之一。本文将从创建索引的作用出发,详细探讨其背后的技术原理、实际应用场景以及可能带来的利弊。 #### 一、索引的基本...
创建索引可以在创建表的时候创建,也可以在创建表之后创建。创建索引的基本语法格式如下: ``` CREATE TABLE table_name [col_name data_type] [UNIQUE | FULLTEXT | SPATIAL] [INDEX | KEY] [index_name] (col_name...
因此,创建索引时应遵循以下原则: 1. 选择性高的列适合创建索引。选择性是指列中不同值占总行数的百分比,选择性越高的列,其索引效率也越高。 2. 考虑查询模式,对于经常用于WHERE子句、JOIN条件、ORDER BY以及...
这时,我们可以为`ds_order`表中的`user_id`字段创建索引,提高查询效率。 ```sql CREATE TABLE `ds_order` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键 id', `user_id` int(11) NOT NULL COMMENT '...
一般来说,选择创建索引的列时,可以参考以下的原则: * 在经常需要搜索的列上创建索引,加快搜索的速度。 * 在作为主键的列上创建索引,强制该列的唯一性和组织表中数据的排列结构。 * 在经常用于连接的列上创建...
除了创建索引,索引管理还包括删除。在MySQL中,可以使用`DROP INDEX`语句来删除索引。但是,需要注意的是,如果索引与主键关联,必须先删除主键,再删除主键索引。 索引的失效场景包括:更新或删除索引列,使用不...
### 数据库索引创建建议 #### 一、深入理解索引结构 索引在数据库管理中扮演着极其重要的角色,特别是在处理大量数据时。合理的索引设计能够显著提高查询性能,减少系统的响应时间。本文主要探讨数据库中的两种...
在本文中,我们将详细介绍 Oracle 索引的创建、特点、不足、创建索引列的特点、不应该建索引列的特点、限制索引等方面的知识点。 一、索引介绍 索引是 Oracle 数据库中的一种数据结构,它可以加快数据的检索速度,...
为什么不对没一列创建索引 减少开销 覆盖索引 效率高 减少开销:假如对col1、col2、col3创建组合索引,相当于创建了(col1)、(col1,col2)、(col1,col2,col3)3个索引 覆盖索引:假如查询SELECT col1, col2...
在这个主题中,我们将深入探讨数据库索引的基础概念、设计原则、优化策略以及实际应用。 一、索引基础知识 索引是数据库系统为了加速查询而创建的数据结构,类似于书籍的目录,它提供了快速访问特定数据记录的途径...
在SQL中,我们可以通过CREATE INDEX语句来创建索引,例如: ```sql CREATE INDEX idx_name ON table_name(column_name); ``` 这将在`column_name`列上创建名为`idx_name`的索引,使得根据该列进行的查询能更快执行。...
在表中单个字段上创建索引。单列索引只根据该字段进行索引。单列索引可以是普通索引也可以是惟一性索引、全文索引,只要保证索引只对应一个字段即可。 #### 多列索引 在表的多个字段创建一个索引。该索引指向创建...
创建索引可以大大提高系统的性能,但创建索引也需要遵循一定的原则。以下是一些建议: (1)创建唯一性索引 创建唯一性索引可以保证每一行数据的唯一性。 (2)创建合理的索引 创建合理的索引可以大大提高系统的...
- 对于频繁进行连接操作但未定义为外键的列,应该创建索引。这是因为连接操作通常涉及多表,索引能够加速匹配过程。 - 经常需要进行排序或分组(如`GROUP BY`或`ORDER BY`)的列应建立索引,这样在执行这些操作时...
MySQL索引最左原则是指在MySQL数据库中,利用复合索引时,查询条件要尽量匹配索引的最左边字段,这样才能有效地利用索引,加快查询速度。理解最左原则对于优化数据库查询性能至关重要。 首先,当我们创建复合索引时...
1.创建索引 代码如下: CREATE INDEX indexName ON mytable(username(length)); 如果是 CHAR,VARCHAR 类型,length 可以小于字段实际长度;如果是 BLOB 和 TEXT 类型,必须指定 length,下同。 2.修改表结构 代码如
正如文档标题“Oracle创建索引要做到三个适当”所强调的,创建索引需要遵循“适当”的原则,具体包括在适当的表上、适当的列上创建适当数量的索引。以下将对这三个方面进行详细阐述,以帮助数据库管理员更好地理解...