一尘不染

将索引添加到MySQL中的BIGINT列是否有帮助?

mysql

我有一个将包含数百万个条目的表,以及一个具有BIGINT(20)每行唯一的值的列。它们不是主键,但是在某些操作期间,有数千个SELECTWHERE子句中使用此列。

问: 当条目数量增加到数百万时 ,向该列添加索引是否有帮助 ?我知道它将用于文本值,但是我不熟悉索引对INTor的作用BIGINT

SELECT可能发生数千次的示例与此类似:

`SELECT * FROM table1 WHERE my_big_number=19287319283784

阅读 642

收藏
2020-05-17

共1个答案

一尘不染

如果表非常大,那么对未索引的值进行搜索可能会非常慢。用MySQL术语来说,这种查询最终是“表扫描”,这是一种说法,它必须按顺序对表中的每一行进行测试。显然,这不是最佳方法。

添加索引将有助于提高 读取 速度,但是您付出的代价是 写入
速度稍慢。进行优化时总是要权衡取舍,但在您的情况下,读取时间的减少将是巨大的,而写入时间的增加将是微不足道的。

请记住,将索引添加到大表可能会花费大量时间,因此请在将其应用于生产系统之前针对生产数据进行测试。该表可能会在ALTER TABLE语句期间被锁定。

与往常一样,使用EXPLAIN查询来确定其执行策略。在您的情况下,它将类似于:

EXPLAIN SELECT * FROM table1 WHERE my_big_number=19287319283784
2020-05-17