数据库索引最左原则问题?急

问题描述

数据库索引最左原则问题?急

看了好多例子都是如下同样的解释:
多列字段做索引,state/city/zipCode,想要索引生效的话,只能使用如下的组合
state/city/zipCode
state/city
state
其他方式(如city,zipCode),则索引不会生效
但是::
我发现如果
(city,zipCode,state)或者(city,state,zipCode)即只要包含最左的索引值。他在我执行
SQL的时候依然走了索引。这是怎么回事。

我用的MYSQL数据库

解决方案

索引中的字段是次序相关的,这是分组先后的依据。
WHERE 条件中字段条件的次序是无关的,在 AND 运算中是平级的。

时间: 2024-04-20 02:47:43

数据库索引最左原则问题?急的相关文章

数据库索引原理及优化

本文内容主要来源于互联网上主流文章,只是按照个人理解稍作整合,后面附有参考链接. 一.摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等.为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论. 二.常见的查询算法及数据结构 为什么这里要讲查询算

数据库索引的实现原理及查询优化

MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构. 使用索引的目的在于提高查询效率,这篇文章梳理一下索引的实现原理和应用. 1.不同的存储引擎索引实现的数据结构不同  MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如B-Tree索引,哈希索引,全文索引等, 主要存储引擎有MyISAM.InnoDB.MEMORY和MERGE等,在创建表到时候通过engine=或type=来指定所要使用到引擎, 1 sh

浅谈PHP开发中MySQL数据库索引的经验

假如我们创建了一个testIndex表:CREATE TABLE testIndex(i_testID INT NOT NULL,vc_Name VARCHAR(16) NOT NULL); 我们随机向里面插入了1000条记录,其中有一条    i_testID    vc_Name      555    erquan     在查找vc_Name="erquan"的记录SELECT * FROM testIndex WHERE vc_Name='erquan';时,如果在vc_Na

提前认识软件开发(32) 数据库索引

索引在数据库中占有非常重要的地位,它是对数据库表中一列或多列的值进行排序的一种结构.正确使用索引,可快速访问数据库表中的特定信息,进而提高数据库脚本的执行效率. 1. 索引分类 数据库表中经常有一列或几列的组合,其值唯一地标识表中的每一行,该列称为表的主键. 在数据库中,将索引分为三类:唯一索引.主键索引和聚集索引. 唯一索引是不允许其中任何两行具有相同索引值的索引,即索引列的值不允许重复. 主键索引是唯一索引的特定类型,该索引要求主键中的每个值都唯一. 在聚集索引中,表中行的物理顺序与键值的逻

MySQL数据库索引使用方法

  走向精通MySQL的道路非常的艰难,还好各种关系型数据库大同小异,足够让我从增删改查上升到高性能数据库的架构和调优.这期间的各种概念就不絮叨了,我也很难表述的很清楚,昨天写了个小脚本往我本机MySQL数据库的某张表里面注入了200万条数据(Windows7旗舰版/1.66GHz/2G内存/MySQL5.1.50),数据表的结构如下图所示,属于一个比较基本的定长表,考虑到我可怜的本本的承受能力,id使用从1开始的自增,title字段为随机20个标题中的一个,content都是相同的内容,tim

数据库索引的作用和优点缺点

原文:数据库索引的作用和优点缺点 为什么要创建索引呢?这是因为,创建索引可以大大提高系统的性能. 第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性. 第二,可以大大加快 数据的检索速度,这也是创建索引的最主要的原因. 第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义. 第四,在使用分组和排序 子句进行数据检索时,同样可以显著减少查询中分组和排序的时间. 第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能. 也许会有人要问:增加索引有如此

mysql数据库建表问题,在线急等

问题描述 mysql数据库建表问题,在线急等 数据库建表这3个语句是什么意思?后两个有什么区别? (1)PRIMARY KEY (ID) USING BTREE (2)ENGINE=InnoDB DEFAULT CHARSET=gb2312; (3)ENGINE = InnoDB CHARACTER SET gb2312 COLLATE gb2312_chinese_ci; 解决方案 创建主键 collate对字符串排序. 解决方案二: 创建主键,gb2312是编码格式吧,类型 解决方案三: 1

基于B-树和B+树的使用:数据搜索和数据库索引的详细介绍_MsSql

B-树 1 .B-树定义 B-树是一种平衡的多路查找树,它在文件系统中很有用. 定义:一棵m 阶的B-树,或者为空树,或为满足下列特性的m 叉树:⑴树中每个结点至多有m 棵子树:⑵若根结点不是叶子结点,则至少有两棵子树: ⑶除根结点之外的所有非终端结点至少有[m/2] 棵子树:⑷所有的非终端结点中包含以下信息数据:       (n,A0,K1,A1,K2,-,Kn,An)其中:Ki(i=1,2,-,n)为关键码,且Ki<Ki+1,            Ai 为指向子树根结点的指针(i=0,1

让你提前认识软件开发(32):数据库索引

第2部分 数据库SQL语言 数据库索引           索引在数据库中占有非常重要的地位,它是对数据库表中一列或多列的值进行排序的一种结构.正确使用索引,可快速访问数据库表中的特定信息,进而提高数据库脚本的执行效率.   1. 索引分类         数据库表中经常有一列或几列的组合,其值唯一地标识表中的每一行,该列称为表的主键.         在数据库中,将索引分为三类:唯一索引.主键索引和聚集索引.         唯一索引是不允许其中任何两行具有相同索引值的索引,即索引列的值不允许