gpt4 book ai didi

MySQL 选择索引列

转载 作者:可可西里 更新时间:2023-11-01 07:41:57 24 4
gpt4 key购买 nike

我是 MySQL 的新手,有几个问题我找不到任何相关信息。这是我正在尝试做的事情:

我有一个包含 5 列的数据库:id、c1、c2、c3、c4id 是 PRIMARY KEY每一行在 c1、c2、c3、c4 中都是唯一的(如果有你们为此使用的术语,也请告诉我 :))

我需要能够在表中搜索现有行,所以我想在 c1 上放置一个 INDEX,这会将行数从 10,000(最多 100,000)减少到几行。我的问题是:

  1. 在索引的性能优势变得“值得”之前,您估计有多少行?大概/轶事答案很好。

  2. 我需要任何特殊的语法来告诉 MySQL 使用索引吗?现在我正在做一个“SELECT id FROM table WHERE c1='blah' AND c2='blah' AND c3='blah' AND c4='blah'”,我不确定 INDEX 是否有助于查询全部。

  3. 欢迎就查询表的更好方法提出任何其他建议,请记住我是新手!! :)

提前致谢!

最佳答案

我想索引是否“值得”取决于您需要查询运行的速度。只有数百条记录,无论哪种方式,它都会“非常”快。但无论如何,索引应该更快,因为您不必读取磁盘上的所有(在某些情况下任何)记录。即使没有索引需要 0.02 秒的查询也可能在 0.0004 秒内执行。一旦进入数千行,您肯定需要一个索引。因此,无论有多少行,您也可以始终对 JOIN 或 WHERE 子句中使用的任何列使用索引。

MySQL 应该 使用您的索引。您可以通过运行 EXPLAIN 查询来检查。 (只需在查询前添加 EXPLAIN,例如 EXPLAIN SELECT * FROM...。)它将显示正在使用的索引(如果有)。请记住,您必须按照在 composite index 中指定的顺序使用列。 .因此,如果您的索引是 c1-c2-c3-c4,则不能只将它用于 c4 而不使用其他列。

因此,SELECT * FROM table WHERE c1 = 'foo' AND c4 = 'bar' 将使用您的索引来获取 c1 = 'foo',但它不能'不要将它用于 c4 = 'bar',因为您没有使用 c2c3。由于您正在使用索引中的所有四列,因此索引应该用于所有这些列。有道理吗?

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

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