gpt4 book ai didi

sql - 什么是 MySQL 索引表?

转载 作者:行者123 更新时间:2023-11-29 04:04:38 25 4
gpt4 key购买 nike

我需要加快查询速度。我要找的是索引表吗?如果是这样,我该如何制作?我是否必须在每次插入时更新它?

这里是表模式:

--table1--   |   --tableA--   |    --table2--
id | id | id
attrib1 | t1id | attrib1
attrib2 | t2id | attrib2
| attrib1 |

和查询:

SELECT 
table1.attrib1,
table1.attrib2,
tableA.attrib1
FROM
table1,
tableA
WHERE
table1.id = tableA.t1id
AND (tableA.t2id = x or ... or tableA.t2id = z)
GROUP BY
table1.id

最佳答案

您需要在tableA 上创建一个复合索引:

CREATE INDEX ix_tablea_t1id_t2id ON table_A (t1id, t2id)

MySQL 中的索引被视为表的一部分:它们会自动更新,并在优化器决定使用它们是一个好的举动时自动使用。

MySQL 不使用术语索引表

此术语由 Oracle 用来指代其他数据库所称的 CLUSTERED INDEX:一种表,其中记录本身根据列的值排列(或一组列)。

MySQL 中:

  • 当您使用 MyISAM 存储时,索引将创建为具有 .MYI 扩展名的单独文件。

    此文件的内容代表一个 B-Tree,每个叶子包含索引键和一个指向包含数据的 .MYD 文件中的偏移量的指针。

    指针的大小由名为 myisam_data_pointer_size 的服务器设置决定,它可以从 27 字节不等,默认为6MySQL 5.0.6 以来。

    这允许创建最多 2 ^ (8 * 6) 字节 = 256 TB

  • MyISAM
  • InnoDB 中,所有表都固有地由 PRIMARY KEY 排序,它不支持堆组织表。

    因此,每个索引实际上只是一个普通的 InnoDB 表,由 N+M 记录的单个 PRIMARY KEY 组成:N记录是索引值,M记录是保存索引数据的主表记录的PRIMARY KEY

    /li>

关于sql - 什么是 MySQL 索引表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/841383/

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