我在Mysql DB中有一个巨大的表。一列是例如会话ID。该字段已编入索引。
如果我在此表中搜索不存在的会话ID,mysql会如何反应?索引在这里有帮助吗?
答案 0 :(得分:1)
当然,索引会有所帮助。如果没有索引,MySQL必须搜索整个表,以找出没有行匹配查询。使用索引,它只会搜索索引(BTREE),这要快得多。
答案 1 :(得分:1)
如果相关列被编入索引,即使目标是查明表中是否存在列的值,它肯定会提高查询性能。这是因为作为documentation points out的索引是指向行的指针。索引数据与表数据分开存在。后者是一个更大,更复杂的数据集,并且查询索引数据的成本更高。
当执行查询SELECT id FROM table where id = 'abc123'
时,即使它没有产生任何结果,也会在id
上没有索引的情况下执行全表扫描,但如果{{{}},则根本不会查询表数据{1}}被编入索引,因为只扫描索引数据并且足以返回空结果。