Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从mysql中获取特定表的索引值?_Mysql_Indexing_Pagination_Cursor - Fatal编程技术网

如何从mysql中获取特定表的索引值?

如何从mysql中获取特定表的索引值?,mysql,indexing,pagination,cursor,Mysql,Indexing,Pagination,Cursor,如何从MySQL中获取特定表的值 “大多数MySQL索引(主键、唯一、索引和全文)都是 存储在B树中。” 正如您可以在文档中看到的,它是B树?研究B树。更具体地说,B+树 让我们通过BTree索引搜索单个项。一个BTree有一个根节点;从那里开始。它可能有100个到子节点的链接,以及关于每个子节点中的值范围的信息。进入相应的子节点。对于一张小桌子,你已经完成了。但是对于一张大桌子,你需要重复这个过程几次。(对于一个有一万亿行的表,可能需要6次迭代。)完成。你已经找到了你想要的那一排 现在,让我们

如何从MySQL中获取特定表的值

“大多数MySQL索引(主键、唯一、索引和全文)都是 存储在B树中。”


正如您可以在文档中看到的,它是B树?

研究B树。更具体地说,B+树

让我们通过BTree索引搜索单个项。一个BTree有一个根节点;从那里开始。它可能有100个到子节点的链接,以及关于每个子节点中的值范围的信息。进入相应的子节点。对于一张小桌子,你已经完成了。但是对于一张大桌子,你需要重复这个过程几次。(对于一个有一万亿行的表,可能需要6次迭代。)完成。你已经找到了你想要的那一排

现在,让我们获取行的“范围”。(例如:
WHERE id介于1234和9876之间
WHERE name(如'T%')
执行上述操作以查找范围的第一个,然后转到所处底部(“叶”)节点中的“下一个”记录。在叶节点中的记录用完之前,这是正常的

B+树中的
+
是如何起作用的。这意味着从这个节点到底层的“下一个”节点有一个链接。因此,继续范围查询非常快

“扇出”为100的百万行表的统计信息:

要查找特定项:需要触摸3个节点(InnoDB为16KB块)

要获取500个连续行:3个节点到达起点;然后大约5个节点向前扫描

比较……如果没有索引,您需要扫描整个表,大约10000个块(1M/100)。这对于上面的任何一个假设查询都是必需的

在InnoDB(MySQL)中,几乎所有的键都是主键、唯一键和索引键。这些是B+树;没有选项(与其他供应商不同)。除此之外,还有全文空间键;它们更复杂


如果您执行了
SHOW CREATE TABLE foo
,您将获得有关索引的一些信息。`information\u schema有更多信息。

这是如何查找索引信息的。现在的问题是如何获取特定的索引BTREE对象(值)。在我得到这个BTREE之后,我将遍历它。目前我不知道如何获得BTREE。这意味着如何遍历它。?这并不重要,因为我需要先获得BTREE。我怀疑知道索引是BTREE或其他索引的日常价值,或者sql如何遍历节点。在一天结束时,你告诉sql wh在你想要的时候,优化器决定如何做你想要做的事情,包括是否使用索引。B+树非常适合“点查询”和“范围查询”。不过,优化器可能会有效地选择忽略您的索引。例如:无论如何,大多数行都是需要的;在索引B树和数据之间跳转比简单地扫描所有数据要慢。这是一个很好的信息。这就是为什么我需要获得B+树对象的原因。因此我可以稍后使用它进行操作。许多人可能会我不明白我需要什么。谢谢@RickJames你得到了我的投票。@P.Salmon-是的,TMI。有时我想提供太多信息。我的评论是“执行摘要”——对大多数人来说已经足够了。