Mysql-多表查询as索引

Mysql-多表查询as索引,第1张

方法

(1) 根据需求找到关联表

(2)找到关联条件

重点的表tables

* 需求1:统计world库下有几个表

需求2:统计所有库下表的个数

需求3:统计每个库的总数据大小

--单表占空间:AVG_ROW_LENGTH*TABLE_ROWS+INDEX_LENGTH

什么使索引:索引其实就是一种算法

BTree

HASH

Rtree

Fulltext

辅助索引

辅助索引只提取索引列作为叶子节点

聚集索引

聚集索引提取整行数据作为叶子节点

1、辅助索引和聚集索引最大的区别就在于叶子节点,枝节点和根节点原理相同

2、辅助索引会记录主键值,一般情况(除等值查询),最终都会通过聚集索引(主键)来找到需要的数据

第二种

一般经常用来查询的列作为索引

索引可以有多个,但是索引名不可重名

第一种:单列索引

第二种:前缀索引

前缀索引只能应用到字符串列,数字列不能用前缀索引

联合索引说明:如果在一个表内对A、B、C三个列创建联合索引那么创建索引将按照如下情况创建索引表:

A

AB

ABC

======================================================

(1)查询列无索引

(2)语句不符合走走索引条件

(3)需要查看全表

即把有索引的列全便利一遍

>、 <、 >=、 <=、 like、 between and 在范围扫描中,这些会受到B+tree索引叶子节点上额外的优化,因为这些是连续取值的

or、in 这两个不是连续的取值,所以不能受到B+tree索引的额外优化,使用时相当于Btree索引

!=、 not in 只有在主键列才走索引也是range级别

(1)>、 <、 >=、 <=、 like、 between and

(2)or、in

(3)!=、 not in

多表连接查询,非驱动表连接条件是主键或唯一键

一般多表查询的时,最左侧的表为驱动表,右侧的为非驱动表,下边的例子中country标为非驱动表

7.1.1 数字类型

7.1.2 字符串类型:

字符集

中文

gbk 2字节

utf8 3字节

utf8mb4 4字节

utf8mb4 为例:

举例(1)联合索引等值查询

举例(2) 联合索引中有不等值查询

如果Extra列出现Using temporary、Using filesort,两项内容,那么考虑以下语句的问题。

group by

order by

distinct

join on

union

查看索引

mysql>show index from tblname

mysql>show keys from tblname

· Table

表的名称。

· Non_unique

如果索引不能包括重复词,则为0。如果可以,则为1。

· Key_name

索引的名称。

· Seq_in_index

索引中的列序列号,从1开始。

· Column_name

列名称。

· Collation

列以什么方式存储在索引中。在MySQL中,有值‘A’(升序)或NULL(无分类)。

· Cardinality

索引中唯一值的数目的估计值。通过运行ANALYZE TABLE或myisamchk -a可以更新。基数根据被存储为整数的统计数据来计数,所以即使对于小型表,该值也没有必要是精确的。基数越大,当进行联合时,MySQL使用该索引的机 会就越大。

· Sub_part

如果列只是被部分地编入索引,则为被编入索引的字符的数目。如果整列被编入索引,则为NULL。

· Packed

指示关键字如何被压缩。如果没有被压缩,则为NULL。

· Null

如果列含有NULL,则含有YES。如果没有,则该列含有NO。

· Index_type

用过的索引方法(BTREE, FULLTEXT, HASH, RTREE)。

· Comment


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6251666.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-19
下一篇 2023-03-19

发表评论

登录后才能评论

评论列表(0条)

保存