如果在查询中没有隔离索引的列,mysql通常不会使用索引。“隔离“列意味着它不是表达式的一部分,也没有位于函数中。
例如:
mysql>select id from test where id +1 =5;
我们能轻易地看出where子句中的id等4,但是mysql却不会帮你求解方程,这取决于自己。我们应该养成简化where子句的习惯,这样就会把被索引的列单独放在比较运算符的一边。
再例如:
mysql>select ... where TO_DAYS(CURRENT_DATE) - TO_DAYS(date_col)<=10;
这个查询会查找date_cool值离今天不超过10天的所有行,但是它不会使用索引,因为使用了TO_DAYS()函数。
稍作修改:
mysql>select ... where data_cool >= DATE_SUB(CURRENT_DATE,INTERVAL 10 DAY);
这个查询就可以使用索引,但是它还可以改进。使用CURRENT_DATE将会阻止查询缓存把结果缓存起来,可以用常量替换掉CURRENT_DATE的值:
mysql>select ... where date_cool >= DATE_SUB('2012-08-29',INTERVAL 10 DAY);
分享到:
相关推荐
- **唯一索引**:确保列中的值都是唯一的。 - **主键索引**:为主键自动创建的索引。 - **全文索引**:用于全文搜索,例如搜索引擎。 - **空间索引**:用于地理坐标等空间数据的索引。 #### 索引类型 - **B-Tree...
### MySQL索引、锁与事务详解 #### 一、索引 **索引定义与作用:** 索引是一种数据结构,用于加速数据检索的过程。它通过建立数据表中某些列的值与行的位置之间的映射关系,使得数据库系统能够快速定位到所需的...
一、MySQL索引类型与原理 1. B+树(B+ Tree):MySQL中最常见的索引类型,尤其适用于主键索引和唯一索引。B+树是一种自平衡的树,所有数据都在叶子节点,非叶子节点只存储索引,这样可以实现快速查找。每个节点可...
MySQL数据库在日常使用中会遇到各种问题,其中索引优化是提升数据库性能的关键环节。本文将探讨MySQL的一些常见问题,特别是与索引相关的优化策略。 1. 关于MySQL `count(distinct)` 的逻辑bug 在执行`count...
"MySQL王者晋级之路"是一部旨在帮助用户提升MySQL技能的内部资料,它涵盖了从基础到高级的各种主题,助你一步步攀登数据库技术的高峰。 首先,理解MySQL的基础知识至关重要。MySQL是一款开源的关系型数据库管理系统...
实际上,在可重复读隔离级别下,MySQL通过一种名为Next-Key Locks的机制,防止了幻读,但只在InnoDB存储引擎且使用了唯一索引的情况下有效。如果在无索引或者非唯一索引的情况下,幻读仍有可能发生。 总的来说,...
MySQL是世界上最流行的开源关系型数据库管理系统之一,广泛应用于各种规模的应用场景。在面试中,深入理解和掌握MySQL的核心概念和技术是至关重要的。以下是一些关键知识点的详细解释: 1. **ACID特性**: - 原子...
5. 多列索引:基于多个列的组合创建的索引,也称为复合索引。 【MySQL数据库管理索引】 在MySQL中,可以通过以下SQL语句来管理索引: - 创建索引:`ALTER TABLE table_name ADD INDEX index_name (column_name)` -...
首先,我们需要了解MySQL作为数据存储的优势,它提供了丰富的SQL查询语言,支持事务处理和ACID(原子性、一致性、隔离性和持久性)特性,适用于结构化数据的管理。然而,当涉及到大量数据的快速搜索时,MySQL可能...
│ 第二十课MySQL索引和调优.pdf │ 第二课MySQL入门介绍.pdf │ 第五课MySQL常用函数介绍.pdf │ 第八课InnoDB内核.pdf │ 第六课SQL高级应用.pdf │ 第十一课MySQL表分区8.0.pdf │ 第十七课Elasticsearch分享-...
10.MySQL 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区 别?11.表中有大字段 X(例如:text 类型),且字段 X 不会经常更新,以读为 为主,将该字段拆成子表好处是什么?12.MySQL 中 InnoDB 引擎的行锁...
MySQL中的事务隔离级别是数据库管理系统确保事务之间相互独立的重要机制,它主要针对并发操作时可能出现的问题,如脏读、不可重复读和幻读等。在MySQL的InnoDB存储引擎中,有四种不同的事务隔离级别: 1. **读未...
尽管如此,我将基于标题和描述中提供的关键词“Effective MySQL之SQL语句最优化”来构建知识点。 1. SQL语句最优化的概念:在数据库管理中,对SQL语句进行优化是提高数据库性能的关键环节。最优化的SQL语句能够在...
比如,对于多列索引,如果查询条件只匹配到索引的一部分,就无法利用完整的索引,这称为索引覆盖的不完全。 **优化策略** 1. **分析与调整索引**:通过`EXPLAIN`语句分析查询计划,了解是否正确使用了索引,适时...
总结来说,MySQL的DELETE语句在不同索引类型和不同隔离级别下会有不同的加锁策略。理解这些策略对于优化SQL语句,减少死锁,以及提升数据库性能至关重要。在实际应用中,应根据业务需求选择合适的隔离级别和索引设计...
MySQL数据库提供了四种不同的事务隔离级别,它们分别是读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)以及串行化(Serializable)。每种隔离级别都有其特点,用于权衡数据...
MySQL支持ACID(原子性、一致性、隔离性和持久性)特性,你可以通过`START TRANSACTION;`、`COMMIT;`和`ROLLBACK;`来管理事务。 视图是数据库的虚拟表,提供了一种抽象数据的方式。通过`CREATE VIEW view_name AS ...