一、索引的建立和使用规则
1:最左前缀匹配原则
mysql 会从左向右,匹配直到遇到范围查询(>,<,between,like)就停止匹配
比如建立(a,b,c,d)顺序的索引
使用这样的查询语句 a = 1 and b=2 and c>3 and d =4 ; d是用不到索引的
但如果建立(a,b,d,c)的索引则都可以用到 , a,b,d 的顺序可以调整
2: = 和 in 可以乱序 ,比如a =1 and b = 2 and c =3
建索引的顺序可以任意 : (a,b,c)或 (b,a,c)
3:使用区分度高(选择性高)来做索引
4:索引列不能参与计算
5:尽量使用联合索引,不用使用单独索引
二、执行计划
rows是核心标志,绝大部分rows小的语句执行一定很快。
慢查询优化基本步骤
0.先运行看看是否真的很慢,注意设置SQL_NO_CACHE1.where条件单表查,锁定最小返回记录表。这句话的意思是把查询语句的where都应用到表中返回的记录数最小的表开始查起,单表每个字段分别查询,看哪个字段的区分度最高
2.explain查看执行计划,是否与1预期一致(从锁定记录较少的表开始查询)
3.order by limit 形式的sql语句让排序的表优先查
4.了解业务方使用场景
5.加索引时参照建索引的几大原则
6.观察结果,不符合预期继续从0分析
相关推荐
根据“索引使用规则.txt”文件提供的信息,我们可以深入探讨一系列关于索引使用的最佳实践与限制条件,以下是对这些规则的详细解析: ### 1. 索引与逻辑运算符的兼容性 当在WHERE子句中使用`NOT`或`LIKE '%XX%'`这...
理解并熟练运用索引的使用规则是成为高效数据库管理员的关键。以下将详细介绍MySQL中的索引使用规则及其相关知识。 1. **创建索引** - **CREATE INDEX** 语句用于在表的列上创建索引,例如:`CREATE INDEX idx_...
在本文中,我们将探讨几个最常见和最基本的索引使用规则,特别关注联合索引的使用,这是多列索引的一种,可以帮助进一步优化数据库的查询性能。 首先,我们需要了解等值匹配规则。当我们在WHERE子句中使用等号进行...
MySQLBtree索引使用规则.wmv
本资料“行业-74 再来看看几个最常见和最基本的索引使用规则l.rar”可能包含了一份详细的文档,探讨了数据库索引的基本原则和常见应用。下面,我们将深入讲解一些关于索引的重要知识点。 首先,了解索引的工作原理...
在实践中,聚集索引和非聚集索引的使用规则很容易被忽视或不能根据实际情况进行综合分析。例如,主键就是聚集索引是一种误区。虽然 SQL SERVER 默认是在主键上建立聚集索引的,但这并不意味着主键一定是聚集索引。 ...
### Oracle 创建索引的基本规则 在Oracle数据库管理中,创建合适的索引对于提高查询效率、减少数据处理时间具有重要作用。本文将围绕Oracle创建索引的基本规则进行深入探讨,旨在帮助读者更好地理解如何根据不同的...
SQL实验六:索引和数据完整性的使用[定义] 本实验主要介绍了索引和数据完整性的使用。索引是数据库中的一种数据结构,它可以提高查询的效率,而数据完整性是指数据库中数据的正确性和一致性。 一、索引的使用 ...
虽然我们刚才列出了何时应使用聚集索引或非聚集索引,但在实践中以上规则却很容易被忽视或不能根据实际情况进行综合分析。 1. 主键就是聚集索引 这种想法笔者认为是极端错误的,是对聚集索引的一种浪费。虽然 SQL ...
下面我们将深入探讨C#中的索引器使用及其重要性。 一、索引器的基本结构 索引器定义在类或结构中,通常用于实现类的“下标”操作。一个简单的索引器声明如下: ```csharp public int this[int index] { get { ...
在数据库管理系统中,索引是一种优化查询性能的重要技术。这里我们主要探讨两种索引结构:B树(B-Tree)和一种自创的Connect结构。本文将深入解析这两种数据结构的原理、优缺点以及在实际应用中的场景。 首先,我们...
由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列(联合索引)。 非聚集索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同,一个表可以包含多个非聚集索引。 ...
Oracle 索引与分区索引介绍 Oracle 索引与分区索引是 Oracle 数据库中两个重要的概念,它们都是为了提高查询性能和数据存储效率而设计的。...分区索引可以根据分区规则快速地定位特定的数据行,从而提高查询性能。
- 不是所有查询都受益于索引,对于全表扫描或者不使用索引列的查询,索引可能反而增加系统负担。 - 使用`EXPLAIN PLAN`或`SQL Profiler`来分析查询性能,确定是否需要添加或调整索引。 **总结:** Oracle约束和...
- **解决方案**:将`<>`操作符转换为两个条件`和`>`的组合,这样在使用基于规则的优化器时,可以利用索引。 ```sql SELECT cust_Id, cust_name FROM customers WHERE cust_rating < 'aa' OR cust_rating > 'aa'; ...
接着,通过示例展示了联合索引的使用规则。当在查询中对联合索引的第一个字段使用范围条件时,如`name > 'LiLei'`,MySQL可能会选择不使用该索引,因为它认为范围查询会导致大量行被扫描,导致回表操作效率低下,...
实现这个接口,需要提供三个方法:`getSections()`返回一个表示索引的数组,`getPositionForSection(int section)`根据指定的索引返回对应的列表位置,`getSectionForPosition(int position)`则根据列表位置返回对应...
- 字符串索引的排序顺序由字符集的排序规则(collation)定义。 - 使用`LIKE 'abc%'`的查询可以通过索引来优化,因为它可以转化为一个闭区间查询。 - 使用`LIKE '%abc'`的查询通常无法利用索引进行优化。 #### 六、...
这样,在采用基于规则的优化器而不是基于代价的优化器时,将会使用索引。 限制2:使用 IS NULL 或 IS NOT NULL 使用 IS NULL 或 IS NOT NULL 也会限制索引的使用。因为 NULL 值并没有被定义。在 SQL 语句中使用 ...
### Oracle为何有时不使用索引来查找数据 Oracle数据库在处理SQL查询时,会根据一系列复杂的因素决定是否使用索引以及如何高效地检索数据。本文将深入探讨Oracle在哪些情况下可能会选择不使用索引的原因,并解释...