`

mysql索引之隔离列

阅读更多

如果在查询中没有隔离索引的列,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);

分享到:
评论

相关推荐

    mysql索引、触发器、事务、存储过程说明

    - **唯一索引**:确保列中的值都是唯一的。 - **主键索引**:为主键自动创建的索引。 - **全文索引**:用于全文搜索,例如搜索引擎。 - **空间索引**:用于地理坐标等空间数据的索引。 #### 索引类型 - **B-Tree...

    面试mysql 之索引 锁 事物

    ### MySQL索引、锁与事务详解 #### 一、索引 **索引定义与作用:** 索引是一种数据结构,用于加速数据检索的过程。它通过建立数据表中某些列的值与行的位置之间的映射关系,使得数据库系统能够快速定位到所需的...

    mysql索引,分布式事务,三阶段协议,b+树

    一、MySQL索引类型与原理 1. B+树(B+ Tree):MySQL中最常见的索引类型,尤其适用于主键索引和唯一索引。B+树是一种自平衡的树,所有数据都在叶子节点,非叶子节点只存储索引,这样可以实现快速查找。每个节点可...

    mysql-常见问题,索引优化

    MySQL数据库在日常使用中会遇到各种问题,其中索引优化是提升数据库性能的关键环节。本文将探讨MySQL的一些常见问题,特别是与索引相关的优化策略。 1. 关于MySQL `count(distinct)` 的逻辑bug 在执行`count...

    MySQL王者晋级之路_MySql王者晋级之路_

    "MySQL王者晋级之路"是一部旨在帮助用户提升MySQL技能的内部资料,它涵盖了从基础到高级的各种主题,助你一步步攀登数据库技术的高峰。 首先,理解MySQL的基础知识至关重要。MySQL是一款开源的关系型数据库管理系统...

    mysql数据库事务隔离级别借鉴.pdf

    实际上,在可重复读隔离级别下,MySQL通过一种名为Next-Key Locks的机制,防止了幻读,但只在InnoDB存储引擎且使用了唯一索引的情况下有效。如果在无索引或者非唯一索引的情况下,幻读仍有可能发生。 总的来说,...

    MySQL面试题进阶版附答案高难度深入挖掘MySQL的核心概念与技术探索ACID特性、事务隔离级别、索引优化、连接操作

    MySQL是世界上最流行的开源关系型数据库管理系统之一,广泛应用于各种规模的应用场景。在面试中,深入理解和掌握MySQL的核心概念和技术是至关重要的。以下是一些关键知识点的详细解释: 1. **ACID特性**: - 原子...

    第三十六章:Mysql事务及索引1

    5. 多列索引:基于多个列的组合创建的索引,也称为复合索引。 【MySQL数据库管理索引】 在MySQL中,可以通过以下SQL语句来管理索引: - 创建索引:`ALTER TABLE table_name ADD INDEX index_name (column_name)` -...

    使用MySQL作为SOLR的索引源

    首先,我们需要了解MySQL作为数据存储的优势,它提供了丰富的SQL查询语言,支持事务处理和ACID(原子性、一致性、隔离性和持久性)特性,适用于结构化数据的管理。然而,当涉及到大量数据的快速搜索时,MySQL可能...

    MySQL 面试MySQL 面试MySQL 面试MySQL 面试MySQL 面试

    存储引擎是 MySQL 中的核心组件之一,它负责将数据存储在磁盘上,并提供了访问和操作数据的接口。 InnoDB 存储引擎是 MySQL 中默认的存储引擎,它使用 B+ 树索引来存储数据。在 InnoDB 中,B+ 树索引的叶子节点保存...

    新版 MySQL DBA 高级视频 基于MySQL 5.7 MySQL 8.0版本.rar

    │ 第二十课MySQL索引和调优.pdf │ 第二课MySQL入门介绍.pdf │ 第五课MySQL常用函数介绍.pdf │ 第八课InnoDB内核.pdf │ 第六课SQL高级应用.pdf │ 第十一课MySQL表分区8.0.pdf │ 第十七课Elasticsearch分享-...

    mysql事务隔离级别1

    MySQL中的事务隔离级别是数据库管理系统确保事务之间相互独立的重要机制,它主要针对并发操作时可能出现的问题,如脏读、不可重复读和幻读等。在MySQL的InnoDB存储引擎中,有四种不同的事务隔离级别: 1. **读未...

    Effective MySQL之SQL语句最优化.pdf

    尽管如此,我将基于标题和描述中提供的关键词“Effective MySQL之SQL语句最优化”来构建知识点。 1. SQL语句最优化的概念:在数据库管理中,对SQL语句进行优化是提高数据库性能的关键环节。最优化的SQL语句能够在...

    【MySQL数据库】一条SQL语句为什么执行这么慢?

    比如,对于多列索引,如果查询条件只匹配到索引的一部分,就无法利用完整的索引,这称为索引覆盖的不完全。 **优化策略** 1. **分析与调整索引**:通过`EXPLAIN`语句分析查询计划,了解是否正确使用了索引,适时...

    mysql数据库事务隔离级别[参照].pdf

    MySQL数据库提供了四种不同的事务隔离级别,它们分别是读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)以及串行化(Serializable)。每种隔离级别都有其特点,用于权衡数据...

    MySQL DELETE 删除语句加锁分析1

    总结来说,MySQL的DELETE语句在不同索引类型和不同隔离级别下会有不同的加锁策略。理解这些策略对于优化SQL语句,减少死锁,以及提升数据库性能至关重要。在实际应用中,应根据业务需求选择合适的隔离级别和索引设计...

    MYSQL教程MYSQL教程MYSQL教程

    MySQL是世界上最受欢迎的开源关系型数据库管理系统之一,广泛应用于网站开发、数据分析、应用程序存储等多种场景。本教程将全面介绍MySQL的基础知识,包括安装配置、数据类型、SQL语句、表的操作、索引、视图、存储...

Global site tag (gtag.js) - Google Analytics