你好 我想问问在mysql里面使用类似于tab自动补全的命令 该怎么做?
【基于new Bing 的精确模式的回答】
在mysql里面,你可以使用Tab键来自动补全数据库和表的名字。这个功能叫做auto-rehash 。你需要在启动mysql的时候加上--auto-rehash选项,或者在你的主目录下创建一个.my.cnf文件,里面写上[mysql] auto-rehash 。 如果你输入了部分的名字,然后按Tab键,mysql会尝试为你补全。如果有多个可能的匹配,你可以再按一次Tab键来查看所有的选项 。例如: mysql> describe someTableW [TAB] 如果someTableW是唯一的匹配,mysql会自动补全为someTableWithRidiculousLongName。如果不是唯一的匹配,你可以再按一次Tab键来查看其他可能的匹配。 注意,这个功能只有在你选择了一个数据库之后才能使用 。而且,如果你在会话中添加了新的对象,你需要运行\rehash命令来更新自动补全的列表。
【仅供参考】
想要了解这个其实就会和 索引最左前缀原则底层实现原理 扯上关系!
只要我们的联合索引设计的好,其实可以通过三四个联合索引,将80%的SQL查询语句都覆盖到的!
以下那一条SQL会走索引?
-- 联合索引
KEY 'idx_name_age_position' ('name','age','position') USING BTREE;
-- 以下那一条SQL会走索引?
EXPLAIN SELECT * FROM employees WHERE name = 'Bill' and age = 30;
EXPLAIN SELECT * FROM employees WHERE age = 30 and position = 'dev';
EXPLAIN SELECT * FROM employees WHERE position = 31;
显然,我们根据 索引最左前缀原则底层实现原理 可以知道只有第一条SQL会走索引!
至于为什么,我们以第二条SQL为例,首先我们知道该联合主键的('name','age','position')按这个顺序排序的,也就是他们在索引树中,先比较name字段,当name一样时,才会比较age字段,以此类推...
第二条SQL为什么没有走索引就很好解释了。当缺少name的时候,后面的字段已经是无序的了,根本就走不了索引。
所以我们想要搞清楚MySQL的索引,究其根本,还是要弄明白B+树这种数据结构,理解它的执行逻辑。