我有以下疑问:
SELECT id FROM gr_webimages; (~0.0040 sec, 500 records)
SELECT id, parents FROM gr_webimages; (~0.0450 sec, 500 records)
正如您所看到的,唯一的区别是“父”字段,它是varchar(255)类型。 (“id”int(10)主键) 第二个查询慢了10多倍,服务器没有使用任何索引。 任何人都可以解释为什么它需要这么长时间,我怎样才能加快这个查询?
答案 0 :(得分:3)
第一个查询实际上可以在没有触及表的情况下运行...它需要的所有信息都可以在主键索引中使用,因此它只是通过索引运行以获取所需的信息。第二个查询实际上必须从表中读取,这是一个非常大的读取...
“如果查询仅选择索引列,则查询可以直接从索引读取索引列值,而不是从表中读取。”