在MySQL中为BIGINT列添加索引会有帮助吗?

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

问:当条目数量增加到数百万时,为此列添加索引会有所帮助吗?我知道它会用于文本值,但我不熟悉索引对INT或BIGINT的作用.

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

`SELECT * FROM table1 WHERE my_big_number=19287319283784

解决方法:

如果您有一个非常大的表,那么搜索未编制索引的值可能会非常慢.在MySQL术语中,这种查询最终成为“表扫描”,这是一种说法,它必须依次对表中的每一行进行测试.这显然不是最好的方法.

添加索引有助于提高读取速度,但您支付的价格略低于写入速度.在进行优化时总是需要权衡,但在您的情况下,读取时间的缩短将是巨大的,而写入时间的增加将是微不足道的.

请记住,向大型表添加索引可能需要相当长的时间,因此在将生成数据应用到生产系统之前,请对其进行测试.该表可能会在ALTER TABLE语句的持续时间内被锁定.

与往常一样,在查询中使用EXPLAIN来确定其执行策略.在你的情况下,它是这样的:

EXPLAIN SELECT * FROM table1 WHERE my_big_number=19287319283784
上一篇:go xid


下一篇:Jrebel激活