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)
上一篇 2022年5月10日 下午1:20
下一篇 2022年5月10日 下午1:40


相关推荐

  • hadoop系列-hadoop版本选择

    hadoop系列-hadoop版本选择众多版本应该如何选择综上所述 ApacheHadoop 原生版本以及 ClouderaCDH 版本无论在开源或者社区活跃度 学习资料等方面都位列前茅 如果是用来研究学习建议选择这两个版本 基于目前两者更新的版本已经较多的情况 建议直接选择 Hadoop2 0 之后的版本或者 CDH4 之后的版本进行学习 如果是用于生产环境部署 则可根据情况选择稳定的版本 或者选择 Hortonworks 可以使用 ambari 等管理工具较为方便地进行部署

    2026年3月18日
    2
  • 科大讯飞AI硬件销售额增长42%,星火大模型驱动商业化加速

    科大讯飞AI硬件销售额增长42%,星火大模型驱动商业化加速

    2026年3月14日
    3
  • Linux 内核版本号命名规则[通俗易懂]

    Linux 内核版本号命名规则[通俗易懂]Linux内核版本有两种:稳定版和开发版,Linux内核版本号由3个数字组成:r.x.yr:目前发布的内核主版本。x:偶数表示稳定版本;奇数表示开发中版本。y:错误修补的次数。内核版本号每位都代表什么?以版本号为例:2.6.9-5.ELsmp,r:2,主版本号x:6,次版本号,表示稳定版本y:9,修订版本号,表示修改的次数头两个数字合在一齐可…

    2025年9月6日
    8
  • cegui 0.8.7 安装和构建

    cegui 0.8.7 安装和构建cegui是一个开源GUI库,经过历史的验证和发展,变得非常庞大和复杂,但效率是有所保证的,常用于游戏开发。1.首先去CEGUI官网,点击进入下载界面。2.下载这两个,第一个是cegui

    2022年7月3日
    25
  • mysql 字符串索引 起始_mysql截取字符串「建议收藏」

    mysql 字符串索引 起始_mysql截取字符串「建议收藏」mysql截取字符串mysql索引从1开始一、mysql截取字符串函数1、left(str,index)从左边第index开始截取2、right(str,index)从右边第index开始截取3、substring(str,index)当index>0从左边开始截取直到结束当index<0从右边开始截取直到结束当index=0返回空4、substring(str,index,…

    2022年6月12日
    96

发表回复

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

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