gpt4 book ai didi

MySQL 多列索引

转载 作者:太空宇宙 更新时间:2023-11-03 10:25:35 25 4
gpt4 key购买 nike

如果这是我打算在我的数据库上运行的唯一查询,我是否应该在 MyTable 的索引中包含 col3col4

Select MyTable.col3, MyTable.col4
From MyTable
Inner Join MyOtherTable
On MyTable.col1 = MyOtherTable.col1
And MyTable.col2 = MyOtherTable.col2;

我使用的表中有大约一百万行。就我的问题而言,col1col2 是两个表中的唯一集合。

如果您真的需要知道,这里是示例表定义:

CREATE TABLE MyTable 
(col1 varchar(10), col2 varchar(10), col3 varchar(10), col4 varchar(10));

CREATE TABLE MyOtherTable
(col1 varchar(10), col2 varchar(10));

那么,应该是这个吗?

   CREATE MyIdx ON MyTable (col1,col2);

还是这个?

   CREATE MyIdx ON MyTable (col1,col2,col3,col4);

最佳答案

添加列 col3 和 col4 无济于事,因为您只是在使用列 col1 和 col2 找到它们后提取这些值。速度通常来自于确保对列 col1 和 col2 进行了索引。

您实际上应该拆分这些索引,因为您没有一起使用它们:

在 MyTable (col1) 上创建 MyIdx;在 MyTable (col2) 上创建 MyIdx;

在这种情况下,我认为组合索引对您没有帮助。

更正:我想我说错了,因为您打算只对两个表使用该查询,并且永远不会单独连接各个列。在您的情况下,您可以通过将它们放在一起来加快速度。对此进行基准测试以查看使用组合索引与单个索引相比,您在 1/2 百万行上看到的加速有多少会很有趣。 (您仍然不应在索引中使用列 col3 和 col4,因为您没有通过它们加入任何内容。)

关于MySQL 多列索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6076673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com