MySQL查询优化访问方法。

时间:2017-11-30 02:59:49

标签: mysql

拥有访问类型"所有"在查询优化器中?我在MySQL中使用explain = format json语句找到了这个。

2 个答案:

答案 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;