gpt4 book ai didi

Mysql group by 在使用索引时返回错误的结果

转载 作者:可可西里 更新时间:2023-11-01 08:50:33 25 4
gpt4 key购买 nike

我在其中一个 mySql 查询中遇到问题。在我们的任何本地机器上都无法重现问题。我有一个简单的查询

SELECT ID 
FROM TABLE_NAME
WHERE ID IN (15920,15921)
GROUP BY ID

返回结果——

ID15920

Which is unexpected result since there is data for both the ids in database.

Using explain command returned the following result for this query

+----+-------------+------------+-------+--------------------+--------------------+---------+-----+------+---------------------------------------+| id | select_type | table      | type  | possible_keys      | Key                | key_len | Ref | rows | Extra                                 |+----+-------------+------------+-------+--------------------+--------------------+---------+-----+------+---------------------------------------+|  1 | SIMPLE      | TABLE_NAME | range | CUST_SID_SRUN_INDX | CUST_SID_SRUN_INDX |       4 |     |    1 | Using where; Using index for group-by |+----+-------------+------------+-------+--------------------+--------------------+---------+-----+------+---------------------------------------+

For this issue I have tried following solutions -

• Forcing a derived table –

SELECT ID
FROM (SELECT ID
FROM TABLE_NAME
WHERE ID IN (15920,15921)) CUST
GROUP BY ID

• 使用 having 子句而不是 where 子句

SELECT ID 
FROM TABLE_NAME
GROUP BY ID
HAVING ID IN (15920,15921)

• 忽略此表中使用的索引 –

SELECT ID 
FROM TABLE_NAME IGNORE INDEX (CUST_SID_SRUN_INDX)
WHERE ID IN (15920,15921)
GROUP BY ID

所有上述查询返回预期结果如下:-

ID1592015921

我正在尝试分析使用索引时 group by 子句的意外行为。如果我可以尝试其他方法,请告诉我。仅供引用……出现问题的 UAT 框是一台装有 Mysql 5.1.30 的 linux 机器。我们看到的区别是Mysql的版本。我们在我们的机器上使用 Mysql 5.1.52。出现这个问题的表使用了 MyISAM 数据库引擎。

如果需要任何其他输入,请告诉我。

最佳答案

感谢大家的帮助。

在 MySql 5.1.30 和 MyISAM 分区中有一个问题,在我的头撞了几天后,我通过将 MySQL 升级到 5.1.52 版本或重新组织分区解决了这个问题。

供您引用,请参阅 MySQL 论坛上报告的以下错误:

http://bugs.mysql.com/bug.php?id=44821

关于Mysql group by 在使用索引时返回错误的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15134865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com