MySQL 8.0 Invisible Indexes 和 RDS 5.6 Invisible Indexes介绍
mysql 在8.0的时候支持了不可见索引,称为隐式索引
索引默认是可以的,控制索引的可见性可以使用Invisible,visible关键字作为create table,create index,alter table 来进行定义。
RDS 5.6 Invisible Indexes
也是最近刚刚上线的功能。新购买实例目前已经支持,老版本实例,需要进行升级。
那么接下来测试一下。
查看数据库版本:
mysql>select version();
+-----------+
| version() |
+-----------+
| 5.6.16-log |
+-----------+
1 row in set (0.00 sec)
查看表结构以及数据量
CREATE TABLE `employees` (`emp_no` int(11) NOT NULL,`birth_date` date NOT NULL,`first_name` varchar(14) NOT NULL,`last_name` varchar(16) NOT NULL,`gender` enum('M','F') NOT NULL,`hire_date` date NOT NULL,PRIMARY KEY (`emp_no`),KEY `idx_a1` (`birth_date`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mysql>select count(*) from employees;+----------+| count(*) |+----------+| 300024 |+----------+1 row in set (0.33 sec)
新增索引first_name
mysql>alter table employees add index idx_firstname(first_name);执行成功,花费 1034 ms.
测试:
a.显式索引测试:
b.将first_name 设置成隐藏索引
mysql>alter table employees alter index idx_firstname INVISIBLE;
执行成功,花费 6 ms.
c.将隐藏索引修改为显示索引
mysql>alter table employees alter index idx_firstname VISIBLE;
执行成功,花费 6 ms.
MySQL 8.0 Invisible Indexes
查看版本号:
root@my3308.sock-8.0.11>[employees]>select version();
+-----------+
| version() |
+-----------+
| 8.0.11 |
+-----------+
1 row in set (0.00 sec)
查看表结构以及使用create index alter index 创建INVISIBLE index
root@my3308.sock-8.0.11>[employees]>create index idx_first_name on employees(first_name) INVISIBLE;
Query OK, 0 rows affected (1.75 sec)
Records: 0 Duplicates: 0 Warnings: 0root@my3308.sock-8.0.11>[employees]>alter table employees add index idx_last_name(last_name) INVISIBLE;
Query OK, 0 rows affected (1.51 sec)
Records: 0 Duplicates: 0 Warnings: 0
使用alter index ... 命令修改 索引的可见性:
root@my3308.sock-8.0.11>[employees]>explain select * from employees where first_name='Shahab';+----+-------------+-----------+------------+------+---------------+------+---------+------+--------+----------+-------------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+-----------+------------+------+---------------+------+---------+------+--------+----------+-------------+| 1 | SIMPLE | employees | NULL | ALL | NULL | NULL | NULL | NULL | 299290 | 10.00 | Using where |+----+-------------+-----------+------------+------+---------------+------+---------+------+--------+----------+-------------+1 row in set, 1 warning (0.00 sec)root@my3308.sock-8.0.11>[employees]>alter table employees alter index idx_first_name VISIBLE;Query OK, 0 rows affected (0.02 sec)Records: 0 Duplicates: 0 Warnings: 0root@my3308.sock-8.0.11>[employees]>explain select * from employees where first_name='Shahab';+----+-------------+-----------+------------+------+----------------+----------------+---------+-------+------+----------+-------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+-----------+------------+------+----------------+----------------+---------+-------+------+----------+-------+| 1 | SIMPLE | employees | NULL | ref | idx_first_name | idx_first_name | 44 | const | 295 | 100.00 | NULL |+----+-------------+-----------+------------+------+----------------+----------------+---------+-------+------+----------+-------+1 row in set, 1 warning (0.00 sec)root@my3308.sock-8.0.11>[employees]>alter table employees alter index idx_first_name INVISIBLE;Query OK, 0 rows affected (0.02 sec)Records: 0 Duplicates: 0 Warnings: 0root@my3308.sock-8.0.11>[employees]>explain select * from employees where first_name='Shahab';+----+-------------+-----------+------------+------+---------------+------+---------+------+--------+----------+-------------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+-----------+------------+------+---------------+------+---------+------+--------+----------+-------------+| 1 | SIMPLE | employees | NULL | ALL | NULL | NULL | NULL | NULL | 299290 | 10.00 | Using where |+----+-------------+-----------+------------+------+---------------+------+---------+------+--------+----------+-------------+1 row in set, 1 warning (0.00 sec)
可以从INFORMATION_SCHEMA.STATISTICS表中获取索引的属性
root@my3308.sock-8.0.11>[employees]>SELECT INDEX_NAME, IS_VISIBLE FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_SCHEMA = 'employees' and TABLE_NAME='employees';
+----------------+------------+
| INDEX_NAME | IS_VISIBLE |
+----------------+------------+
| idx_first_name | NO |
| idx_last_name | NO |
| PRIMARY | YES |
+----------------+------------+
3 rows in set (0.00 sec)
对于NOT NULL UNIQUE 的约束索引没有显示的主键时,是不可以直接设置成INVISIBLE 属性,
root@my3308.sock-8.0.11>[employees]>CREATE TABLE t2 (-> i INT NOT NULL,-> j INT NOT NULL,-> UNIQUE j_idx (j)-> ) ENGINE = InnoDB;
Query OK, 0 rows affected (0.03 sec)root@my3308.sock-8.0.11>[employees]>ALTER TABLE t2 ALTER INDEX j_idx INVISIBLE;
ERROR 3522 (HY000): A primary key index cannot be invisibleroot@my3308.sock-8.0.11>[employees]>ALTER TABLE t2 ADD PRIMARY KEY (i);
Query OK, 0 rows affected (0.10 sec)
Records: 0 Duplicates: 0 Warnings: 0root@my3308.sock-8.0.11>[employees]>ALTER TABLE t2 ALTER INDEX j_idx INVISIBLE;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
相关文章:

大有可为的“正则表达式”(二)
5.3. 基本和扩展正则表达式Unix支持两种的正则表达式的版本:(1)现代版本:扩展正则表达式(extended regular expression,ERE),属于IEEE1003.2标准,拥有比BRE更多的功能。…

【AI】caffe使用步骤(四):训练和预测
一、训练 1、直接训练 ./build/tools/caffe train --solverexamples/mnist/lenet_solver.prototxt ./build/tools/caffe train --solverexamples/mnist/lenet_solver.prototxt -gpu all //使用全部的gpu来训练2、采用微调funing-tuning训练法 ./build/tools/caffe train --s…

Github免费中文书《Go入门指南》,带你从零学Go | 极客头条
点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓,请扫码咨询 ↑↑↑作者 | 无闻整理 | Jane出品 | AI科技大本营(ID:rgznai100)【导语】Go(也称 Golang)是 Google 开发的一种静态强类型、编…

sql语句中having的作用是?
HAVING对由sum或其它集合函数运算结果的输出进行限制。比如,我们可能只希望看到Store_Information数据表中销售总额超过1500美圆的商店的信息,这时我们就需要使用HAVING从句。语法格式为: SELECT "column_name1", SUM("column…

微软重新释出MS10-015 解决蓝屏问题
微软于周二(3/2)重新释出MS10-015修补程序。由于先前使用者安装该程序时,若电脑中含有Alureon rootkit就会出现更新错误,因而微软也提醒使用者先行杀毒,并避免安装后可能造成的蓝屏画面。 MS10-015是微软在今年2月用来…

share_ptr_c++11
C智能指针 shared_ptr shared_ptr 是一个标准的共享所有权的智能指针, 允许多个指针指向同一个对象. 定义在 memory 文件中(非memory.h), 命名空间为 std. std::shared_ptr<int> sp1 std::make_shared<int>(10);std::shared_ptr<std::string> sp2 std::…

【Python】ubuntu14安装pycaffe环境:python2.7及依赖库
1、问题描述 ubuntu14自带的python2.7版本是python2.7.5,安装pycaffe环境时,出现错误,提示版本低。在bing上搜索源码安装python2.7.16的步骤,后续使用时,又报错,缺少SLL模块: Cant connect to…

周志华、张潼亲自辅导AI课程,DeeCamp 2019正式启动
4 月 8 日,创新工场对外宣布 DeeCamp 2019 人工智能训练营正式启动。 据介绍,DeeCamp 2019 将于 7 月 15 日至 8 月 23 日在北京、上海、南京、广州四地同时举办。今年招生规模也将扩大,计划招收 600 名大学生,进行为期 5 周的理…

No.2 条件
2019独角兽企业重金招聘Python工程师标准>>> clojure中不仅有if 还有when 还有什么when-do when-first when-let 一堆 首先介绍if (defn if? [x](if (pos? x)x(- x))) 这事一个取绝对值的方法,方法名改了下,pos? 是判断是否为正数 参数只能为数字 能看明白吧…

如何用Python和BERT做中文文本二元分类?| 程序员硬核评测
点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓,请扫码咨询 ↑↑↑作者 | 王树义来源 | 王树芝兰(ID:nkwangshuyi)兴奋去年, Google 的 BERT 模型一发布出来,我就很兴奋。因为我当时正在用 fast.ai 的…

【C++】Google Protocol Buffer(protobuf)详解(二)
代码走读:caffe中protobuf的详细使用过程 【一】proto文件,以caffe.proto中BlobShape为例 syntax "proto2"; //指明protobuf版本,默认是v2,其它版本:"proto3"package caffe; // 最终生成c代码…

Linux使用
软件操作 软件包管理 yum安装 yum install ...卸载 yum remove ...搜索 yum serach ...清理缓存 yum clean packages列出已安装 yum list软件包信息 yum info ...硬件资源信息 内存free -m 硬盘df -h 负载(w或top)w 12:53:49 up 2:33, 3 users, load ave…

通过进程ID获得该进程主窗口的句柄
一个进程可以拥有很多主窗口,也可以不拥有主窗口,所以这样的函数是不存在的,所幸的是,相反的函数是有的。所以我们可以调用EnumWindows来判断所有的窗口是否属于这个进程。 typedef struct tagWNDINFO{ DWORD dwProcessId; …

【AI】caffe源码分析(一)
【一】caffe依赖开源库 【C】google gflags详解 【C】google glog详解 【C】Google Protocol Buffer(protobuf)详解(一) 【C】Google Protocol Buffer(protobuf)详解(二) 【C】goog…

专访博世王红星:大数据和AI将是中国制造业升级新动力
数据分析挖掘与工业大数据是智能制造与工业互联网的核心,其本质是通过促进数据的自动流动与智能决策去解决控制和业务问题,有效减少决策过程所带来的不确定性,并尽量克服人工决策的缺点,从而推动智能制造进程与智能工厂的建设&…

C进阶 - 内存四驱模型
一.内存四驱模型 不知我们是否有读过 《深入理解 java 虚拟机》这本书,强烈推荐读一下。在 java 中我们将运行时数据,分为五个区域分别是:程序计数器,java 虚拟机栈,本地方法栈,java 堆,方法区。…

ATEN—第十章OSPF的高级配置(4)
实验使用的工具:小凡模拟器一、在路由器R1上,配置接口,启动ospf路由进程和rip,宣告网段,并配置路由重分发★☆R1☆★☆→Router>Router>enableRouter#config terminalRouter(config)#hostname R1-jinR1-jin(config)#interfa…

【ubuntu】ubuntu14.04、16.04、18.04 LTS版本支持时间
0、历史版本下载地址 http://old-releases.ubuntu.com/releases/ http://mirrors.163.com/ubuntu-releases/ 1、官网说明 https://wiki.ubuntu.com/Kernel/LTSEnablementStack 2、简要记录 如下图: 14.04.0(v3.13) 14.04.1(v3.13) 14.04.5(v4.4) LTS 支持至 20…

BERT拿下最佳长论文奖!NAACL 2019最佳论文奖公布
点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓,请扫码咨询 ↑↑↑作者 | 刘静编辑 | 李尔客本文经授权转自公众号图灵Topia(ID:turingtopia)今日,自然语言处理顶会NAACL 2019最佳论文奖公布ÿ…

Git Bash修改默认路径
Git Bash默认安装在C:/user目录下,如果管理其他目录的代码库,需要切换目录。 修改Git Bash的默认路径,不需要每次切换了。 方法: 桌面Git Bash快捷方式,右键-->属性-->“快捷方式”标签 1,修改“起止…

NextGEN Gallery ~ 最强WordPress相册插件
博客照片很多?上传和管理图片太烦?想幻灯显示相册?在博客中任意插入动态图片效果?…… 你和我一样,需要NextGEN Gallery,最强WordPress相册插件! 其实网上可以搜到不少关于这个插件的介绍&#…

【经验】网络加速:pip
一、python pip下载加速 参考博客:让PIP源使用国内镜像,提升下载速度和安装成功率。 pip/anaconda修改镜像源,加快python模块安装速度 1、Linux下 修改 ~/.pip/pip.conf (没有就创建一个文件夹及文件。文件夹要加“.”,表示是隐…

iframe 有那些缺
*iframe 会阻塞主页面的 Onload 事 *iframe 和主页面共享连接池,而浏览器对相同域的连接有限制(6-8前),所以会影响页面的并行加 使用 iframe 之前需要考虑这两个缺点。如果需要使用 iframe,最通过 javascrit 动态给 iframe 添加 src 属性值&a…

用Python让蔡徐坤在我的命令行里打篮球!|附完整代码
点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓,请扫码咨询 ↑↑↑来源 | 01二进制(ID:gh_d1999add1857)编辑 | Jane【导语】作者自称是一个经常逛 B 站的肥宅。最近 B 站上流行的视频素材除了“换脸”,其次就要属…

javascript 操作Word和Excel的实现代码
1.保存html页面到word 复制代码 代码如下:<HTML> <HEAD> <title> </title> </HEAD> <body> <form id"form"> <table id "PrintA" width"100%" border"1" cellspacing"0" cel…

【C++】C++11新增关键字详解
目录一、auto1、auto 用来声明自动变量,表明变量存储在栈(C11之前)2、auto用于推断变量类型示例(C11)3、声明或定义函数时作为函数返回值的占位符,此时需要与关键字 decltype 一起使用。(C11&am…

linux批量创建用户和密码
老男孩教育第五关实战考试题:批量创建10个用户stu01-stu10,并且设置随机8位密码,要求不能用shell的循环(例如:for,while等),只能用linux命令及管道实现。 方法1:[rootoldboy /]# ech…

“重构”黑洞:26岁MIT研究生的新算法 | 人物志
点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓,请扫码咨询 ↑↑↑整理 | 若名出品 | AI科技大本营(ID:rgznai100)这是一个重要时刻。除了发布跟丈夫的两张合照外,Katie Bouman 在 Facebook 上鲜有内容更新&#…

【Ubuntu】VirtualBox显卡驱动VBoxVGA、VBoxSVGA、VMSVGA +3D对播放视频的影响
一、VBOXVGA、VMSVGA、VBOXSVGA简述 VBOXVGA和VBOXSVGA是vbox自己的,SVGA比VGA先进一点, VBoxSVGA: 使用Linux或者 Windows 7或者更高版本的新vm的默认图形控制器。 与传统的VBoxVGA选项相比,此图形控制器可提高性能和3D支持。 VBoxVGA: 将这…

MFC中利用CFileDialog选择文件并读取文件所遇到的问题和解决方法
在用MFC编写一个上位机时,需要实现选择和读取一个二进制文件,本来以为很简单的但是在实现过程中遇到很多问题,所幸都一一解决,这里做一下记录。 首先在实现文件选择,在界面上设置一个按钮,并在点击事件函数…