为什么我的索引字段是按随机顺序返回的,而不是按字母顺序(ASC)返回的

  • 本文关键字:顺序 返回 ASC 随机 索引 字段 mysql
  • 更新时间 :
  • 英文 :


我有一个users-表

id INT
account_id INT
name VARCHAR
email VARCHAR

我为(account_id, name)添加了一个索引,以便用户按name的字母顺序返回。

然而,在我的一些查询中,用户在name字段上是按字母顺序返回的,但在其他查询中则不是,而是按随机顺序返回的——而且我的索引似乎没有应用。

SELECT * FROM users WHERE account_id = 56;  // Index is applied. 
                                            // Sorted by name in ASC order. 
SELECT * FROM users WHERE account_id = 110; // Index is not applied. 
                                            // Not sorted by name. 

这可能是什么原因?

(这可能与查询获取的记录数量有关吗?可能是因为分区吗?)

请帮忙。

索引并不保证结果的顺序。索引用于简化搜索。在这种情况下,由于您是按account_id进行搜索的,因此这将是唯一使用的索引。

如果您希望对结果进行排序,请使用"ORDERBY"子句。

您误解了索引在MySQL中的作用。索引是一种内部机制,它允许数据库在某些字段上执行得更快。

查询的任何数据都可以按任何顺序返回,除非您特别包含ORDER BY子句。

如果要按名称对用户进行排序,则查询将变为SELECT * FROM users WHERE account_id = 56 ORDER BY name ASC

最新更新