mysql如何处理不存在的索引值?

时间:2014-06-12 13:23:28

标签: mysql indexing

我在Mysql DB中有一个巨大的表。一列是例如会话ID。该字段已编入索引。

如果我在此表中搜索不存在的会话ID,mysql会如何反应?索引在这里有帮助吗?

2 个答案:

答案 0 :(得分:1)

当然,索引会有所帮助。如果没有索引,MySQL必须搜索整个表,以找出没有行匹配查询。使用索引,它只会搜索索引(BTREE),这要快得多。

答案 1 :(得分:1)

如果相关列被编入索引,即使目标是查明表中是否存在列的值,它肯定会提高查​​询性能。这是因为作为documentation points out的索引是指向行的指针。索引数据与表数据分开存在。后者是一个更大,更复杂的数据集,并且查询索引数据的成本更高。

当执行查询SELECT id FROM table where id = 'abc123'时,即使它没有产生任何结果,也会在id上没有索引的情况下执行全表扫描,但如果{{{}},则根本不会查询表数据{1}}被编入索引,因为只扫描索引数据并且足以返回空结果。