mysql函数索引_MySQL 函数索引 (Functional indexes)

mysql函数索引_MySQL 函数索引 (Functional indexes)函数索引示例:CREATETABLEt1(col1INT,col2INT,INDEXfunc_index((ABS(col1))));CREATEINDEXidx1ONt1((col1+col2));CREATEINDEXidx2ONt1((col1+col2),(col1-col2),col1);ALTERTABLEt1ADDINDE…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

函数索引示例:

CREATE TABLE t1 (col1 INT, col2 INT, INDEX func_index ((ABS(col1))));

CREATE INDEX idx1 ON t1 ((col1 + col2));

CREATE INDEX idx2 ON t1 ((col1 + col2), (col1 – col2), col1);

ALTER TABLE t1 ADD INDEX ((col1 * 40) DESC);

涉及多个字段的索引,可以混合使用函数索引和非函数索引,如下:

alter table sbtest1 add index idx_name_age(name, (age+1));

函数索引定义时,可以使用 DESC, ASC 指定其排序方式,如下:

alter table sbtest1 add index idx_1(name desc, (age*10) asc );

函数索引的限制条件:

函数索引实际上是作为一个隐藏的虚拟列实现的,因此其很多限制与虚拟列相同,如下:

函数索引的字段数量受到表的字段总数限制

函数索引能够使用的函数与虚拟列上能够使用的函数相同

子查询,参数,变量,存储过程,用户定义的函数不允许在函数索引上使用

虚拟列本身不需要存储,函数索引和其他索引一样需要占用存储空间

函数索引可以使用 UNIQUE  标识,但是主键不能使用函数索引,主键要求被存储,但是函数索引由于其使用的虚拟列不能被存储,因此主键不能使用函数索引

如果表中没有主键,那么 InnoDB 将会使其非空的唯一索引作为主键,因此该唯一索引不能定义为函数索引

函数索引不允许在外键中使用

空间索引和全文索引不能定义为函数索引

对于非函数的索引,如果创建相同的索引,将会有一个告警信息,而函数索引则不会

如果一个字段被用于函数索引,那么删除该字段前,需要先删除该函数索引,否则删除该字段会报错

非函数索引支持对字段前缀进行索引,函数索引不支持前缀。可以使用 SUBSTRING() 或者 CAST() 。但是查询 SQL 中的参数必须与函数索引定义时的参数完全相同才能使用该索引,如下示例:

CREATE TABLE tbl (

col1 LONGTEXT,

INDEX idx1 ((SUBSTRING(col1, 1, 10)))

);

SELECT * FROM tbl WHERE SUBSTRING(col1, 1, 9) = ‘123456789’;

SELECT * FROM tbl WHERE SUBSTRING(col1, 1, 10) = ‘1234567890’;

SUBSTRING(col1, 1, 9) 无法使用函数索引,SUBSTRING(col1, 1, 10) 可以使用函数索引。

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

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

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


相关推荐

  • Qt多线程通信

    Qt多线程通信简述:1>Qt线程间共享数据主要有两种方式:1)使用共享内存。即使用一个两个线程都能够共享的变量(如全局变量),这样两个线程都能够访问和修改该变量,从而达到共享数据的目的。2)使用singal/slot机制,把数据从一个线程传递到另外一个线程。第一种方法在各个编程语言都普遍使用,而第二种方法是QT的特有的,本文主要介绍第二种。2>

    2022年6月19日
    209
  • mac navicat永久激活码最新_最新在线免费激活

    (mac navicat永久激活码最新)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlS32PGH0SQB-eyJsaWNlbnNlSWQi…

    2022年3月26日
    76
  • T-SQL查询进阶-10分钟理解游标

    T-SQL查询进阶-10分钟理解游标

    2022年3月12日
    38
  • viewpager循环滚动_jq实现轮播图循环

    viewpager循环滚动_jq实现轮播图循环Viewpager图片自动轮播无限循环是Android开发中经常用到的功能,功能实现起来也比较简单。虽然如此,但是很多情况下做出来的效果并不太让人满意,甚至有些上线的项目自动轮播上也会出现一些bug。比如切换过程中出现空白页面,有些甚至在滑动过程中造成程序崩溃。本篇文章将实现ViewPager图片自动轮播无限循环,而且页面切换效果非常流畅。还是先看效果图:页面循环切换最容易出现问题的地方…

    2022年10月5日
    4
  • Charles抓包指南

    Charles抓包指南1.进入Charles官网下载。2.安装Charles后,进行注册。help—>register—>input—>ok!RegisteredName:https://zhile.ioLicenseKey:48891cf209c6d32bf43.运行Charles,并进行配置。手机设置代理后,浏览器访问:chls.pro/ssl会下载证书,然后进入手机设置-安全设置-导入证书即可。小米手机需要第三方浏览器打开链接进行下载,否则下载的.

    2022年6月5日
    61
  • Android系统各版本号及代号「建议收藏」

    Android系统各版本号及代号

    2022年1月18日
    91

发表回复

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

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