mysql前缀索引使用,Mysql:前缀索引与索引[通俗易懂]

mysql前缀索引使用,Mysql:前缀索引与索引[通俗易懂]可以像普通索引一样使用mysql前缀索引吗?如果有一些TEXT列,则前缀索引的长度为例如1,查询是:SELECT*FROMtableWHEREtextcol=’ab’它会给我所有以’a’开头的行还是会检查整列值?一般来说,我很想知道使用前缀索引时是否有任何警告.不考虑性能,如果任何查询必须以不同方式编写,或者客户端是否必须执行额外逻辑,则更多.解决方法:如果你想一下,MySQL仍会给你…

大家好,又见面了,我是你们的朋友全栈君。

可以像普通索引一样使用mysql前缀索引吗?

如果有一些TEXT列,则前缀索引的长度为例如1,查询是:

SELECT * FROM table WHERE textcol =’ab’

它会给我所有以’a’开头的行还是会检查整列值?

一般来说,我很想知道使用前缀索引时是否有任何警告.不考虑性能,如果任何查询必须以不同方式编写,或者客户端是否必须执行额外逻辑,则更多.

解决方法:

如果你想一下,MySQL仍会给你正确的答案,即使没有索引…它只是不会那么快……所以,是的,你仍然会得到一个正确的答案前缀索引.

性能会降低,因为在将“可能”行与索引匹配后,服务器将转到行数据并进一步根据WHERE子句过滤结果.两个步骤而不是一个,但应用程序无需关心.

需要注意的事实是,优化器不会对某些操作(如排序或分组)使用前缀索引,因为它没有为此目的覆盖足够的列数据.

前缀索引的排序不超出前缀的长度.如果您的查询使用完整索引来查找行,您通常会发现返回的行是按索引顺序隐式排序的.如果您的应用程序需要这种行为,那么它当然会期待它不应该期望的东西,因为除非您显式ORDER BY,否则返回行的顺序是未定义的.在任何查询中都不要依赖巧合行为,因为不仅前缀索引匹配的行不一定是任何特定顺序……但事实上,排序不明确的任何结果集的顺序是主题随时改变.

并且,前缀索引不能用作覆盖索引.覆盖索引是指SELECT中的所有列恰好包含在一个索引中的情况(加上可选的主键,因为它也总是存在).优化器将直接从索引读取数据,而不是使用索引来标识要在主表数据中查找的行.即使索引不能用于查找匹配的行,优化器也只会对覆盖索引进行全扫描,而不是对整个表进行全扫描,从而节省了I / O和时间. (顺便说一下,这个功能应该足以选择你想要的列,而不是懒惰的SELECT * – 它可能会打开一些更有效的查询计划).前缀索引也不能用于此.

但是除了性能,优化和查询隐含地做你期望的事情(你不应该期待)之外,没有与前缀索引想到的逻辑相关的警告.结果仍然是正确的.

标签:mysql,indexing,innodb

来源: https://codeday.me/bug/20190724/1527334.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142503.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • AS2 笔记 1——attachMovie 添加库影片

    AS2 笔记 1——attachMovie 添加库影片this["container"].attachMovie("useLoad","useLoadMc",this.getNextHigh

    2022年7月2日
  • 史上最全的Android基础教程+入门实战训练+处理技巧(建议收藏)|寻找C站宝藏

    史上最全的Android基础教程+入门实战训练+处理技巧(建议收藏)|寻找C站宝藏有个专栏包含了Android基础教程和入门实战训练的Android项目,还有各种Android处理技巧。没错,就是我从一年前开始做的Android王国专栏。为什么叫王国呢?因为我觉得接触任何领域的第一步都是先打好基础,然后再实战演练建筑高楼,最后学会各种技巧建筑围墙,这样你的知识王国就建好了,当然这座王国还在不断更新加固。赶紧收藏起来吧,在这里,0基础学会做app!

    2022年6月12日
  • tracert跟踪路由命令_怎么进行路由跟踪

    tracert跟踪路由命令_怎么进行路由跟踪Tracert是Windows路由跟踪程序,在cmd中使用,用于确定IP数据包访问目标所采取的路径。Tracert命令使用用IP生存时间(TTL)字段和ICMP错误消息来确定从一个主机

    2022年8月5日
  • h264解码保存为yuv格式「建议收藏」

    h264解码保存为yuv格式「建议收藏」h264解码保存为yuv格式使用ffmpeg库从摄像头读取h264数据进行解码和显示,最后保存为yuv格式的文件,开发环境为QTCreater。程序流程图如下图所示:ffmpeg.h头文件如下:#ifndefFFMPEG_H#defineFFMPEG_H#include<QMainWindow>#include<QMutex>#include&l…

    2022年6月15日
  • 41-新的信号注册函数 sigaction

    41-新的信号注册函数 sigaction在这之前,我们一直使用signal来注册信号处理函数,而且一开始我甚至都没有提起过甚至signal还有一个兄弟——sigaction.我相信,把sigaction放到这里是适合的,因为你已经具备了足够的基础去理解它了。1.sigaction函数不同于signal函数,sigaction函数是符合POSIX标准的,而signal只是ANSIC标准函数。除了上面的区

    2022年5月25日
  • Java审计之CMS中的那些反序列化漏洞

    Java审计之CMS中的那些反序列化漏洞0x00前言过年这段时间比较无聊,找了一套源码审计了一下,发现几个有意思的点拿出来给分享一下。0x01XStream反序列化漏洞下载源码下来发现并

    2021年12月12日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号