拥有访问类型"所有"在查询优化器中?我在MySQL中使用explain = format json语句找到了这个。
答案 0 :(得分:0)
" ALL"意味着它是一个全表扫描,根本不能使用索引,这不好,你最好添加一些索引。
查看Mannul
答案 1 :(得分:0)
此处“ ALL”表示对前一个表的每个行组合进行全表扫描后查询的返回输出。如果该表是未标记为const的第一个表,则通常不好,并且在所有其他情况下通常非常糟糕。通常,您可以通过添加索引来避免ALL,这些索引允许基于早期表中的常量值或列值从表中检索行。
这里的一个问题是,如果将索引声明为相同的类型和大小,则MySQL可以更有效地在列上使用索引。在这种情况下,如果 VARCHAR 和 CHAR 被声明为相同大小,则认为它们相同。 Table1.column1 被声明为 CHAR(10),而 Table2.column2 被声明为 CHAR(15),因此是长度不匹配。如果两个表的两列都具有相同的数据类型和长度,从而提供了更多的优化输出。
大多数开发人员在一个表上创建许多索引,因此您可以通过使用关键字“ USER INDEX” 来指定用于查询的索引 例如:
SELECT select_fields
FROM tablename USE INDEX(indexname)
WHERE condition;