mysql什么分表?以及我什么知道该去哪个表取数据?
『回复列表(157|隐藏机器人聊天)』
KEY `uid` (`uid`,`type`,`appid`)
--该索引在以下查询中效果最好:
where uid=? and type=? and appid=?
--在以下查询中可以发挥作用
where uid=? and type=?
where uid=?
KEY `uid` (`uid`),
KEY `type` (`type`),
KEY `wxid` (`wxid`)
-- 这是三个索引,第一个仅能用于
where uid=?
where uid=? and ...
-- 第二个仅能用于
where type=?
where type=? and ...
-- 第三个仅能用于
where wxid=?
where wxid=? and ...
-- 那么对于以下查询,会用到上述哪个索引
where uid=? and type=? and wxid=?
-- 答案是不知道,但肯定只能任选其一,三个索引不能同时发挥作用,因为它们互相之间没有关系
-- 如果想针对这个查询进行优化,可以考虑创建以下索引
key `xxx`(uid, type, wxid)
-- 或者如果你认为相同uid的wxid较少,还可以只创建以下索引
key `xxx`(uid, type)
https://blog.csdn.net/dieaixia5129/article/details/122322502
非聚簇索引
InnoDB中,除了聚簇索引以外,其余的索引都可以称为非聚簇索引,非聚簇索引的叶子节点存放主键索引,而不是所有数据。通过非聚簇索引查找数据,其流程是先通过非聚簇索引查找到数据的主键,再通过主键查找对应的数据。
https://blog.csdn.net/fengyuyeguirenenen/article/details/122797873
1、MyISAM存储引擎的非主键索引与InnoDB存储引擎的非主键索引数据结构是一样的,但是最底层叶节点存储的数据和指针信息是不同的。
MyISAM存储引擎的非主键索引最底层叶节点存储的是索引信息及数据指向文件的指针信息。
InnoDB存储引擎的非主键索引最底层叶节点存储的是索引信息及指向主键索引的指针信息。
2、MyISAM存储引擎的数据文件跟索引文件是两个文件。InnoDB存储引擎的数据文件跟索引文件是一个文件。所以找到了主键索引位置也就找到了数据位置。所以InnoDB主键索引被称为聚合索引。
所以是我搞错了,我所描述的是MyISAM的情况,你所描述的才是InnoDB的情况。
这篇文章也解决了我的另一个疑惑:为什么有时InnoDB的count(*)
操作特别慢,甚至可以触发MySQL死锁。原来需要进行全表扫描
https://blog.csdn.net/qq_35642036/article/details/82820178