Hi,

I am new here,

Not sure if this is the appropriate place. If not, any pointers are much 
appreciated.

Not sure if this is a bug that I should report it. Any input on that matter 
will be much appreciated also.

Platform: Debian unstable/SID, MariaDB: 10.5.12-MariaDB-1 SSD disks joined in a 
LVM setup.

I was investigating a bug where GROUP BY is not working in a huge table of mine 
when I noticed the following discrepancy.

I managed to create a trivial reproducer with a 10 rows table.

If I don't specify LIMIT the plan goes to filesort.
If I specify LIMIT <= 9 the plan goes to utilize the index
If I specify LIMIT >= 10 (table rows) the plan foes to filesort.

Is this behavior expected? Do you think I should report it?

Thanks in advance.

   Vassilis Virvilis

# make sure you have no table named t that holds your precious data
#DROP TABLE IF EXISTS t;

CREATE TABLE t (id INT, val INT);
INSERT INTO t SELECT seq, FLOOR( 1 + RAND() *60 ) FROM seq_1_to_10;
ALTER TABLE t ADD INDEX(id);
EXPLAIN SELECT id, GROUP_CONCAT(val) vals FROM t GROUP BY id;
SELECT COUNT(*) FROM t;
EXPLAIN SELECT id, GROUP_CONCAT(val) vals FROM t GROUP BY id LIMIT 9;
EXPLAIN SELECT id, GROUP_CONCAT(val) vals FROM t GROUP BY id LIMIT 10;
EXPLAIN SELECT id, GROUP_CONCAT(val) vals FROM t GROUP BY id LIMIT 11;

Output:

MariaDB [MEDLINE]> EXPLAIN SELECT id, GROUP_CONCAT(val) vals FROM t GROUP BY id;
      1 
+------+-------------+-------+------+---------------+------+---------+------+------+----------------+
      2 | id   | select_type | table | type | possible_keys | key  | key_len | 
ref  | rows | Extra          |
      3 
+------+-------------+-------+------+---------------+------+---------+------+------+----------------+
      4 |    1 | SIMPLE      | t     | ALL  | NULL          | NULL | NULL    | 
NULL | 10   | Using filesort |
      5 
+------+-------------+-------+------+---------------+------+---------+------+------+----------------+
1 row in set (0.034 sec)

MariaDB [MEDLINE]> SELECT COUNT(*) FROM t;
      1 +----------+
      2 | COUNT(*) |
      3 +----------+
      4 |       10 |
      5 +----------+
1 row in set (0.001 sec)

MariaDB [MEDLINE]> EXPLAIN SELECT id, GROUP_CONCAT(val) vals FROM t GROUP BY id 
LIMIT 9;
      1 
+------+-------------+-------+-------+---------------+------+---------+------+------+-------+
      2 | id   | select_type | table | type  | possible_keys | key  | key_len | 
ref  | rows | Extra |
      3 
+------+-------------+-------+-------+---------------+------+---------+------+------+-------+
      4 |    1 | SIMPLE      | t     | index | NULL          | id   | 5       | 
NULL | 9    |       |
      5 
+------+-------------+-------+-------+---------------+------+---------+------+------+-------+
1 row in set (0.001 sec)

MariaDB [MEDLINE]> EXPLAIN SELECT id, GROUP_CONCAT(val) vals FROM t GROUP BY id 
LIMIT 10;
      1 
+------+-------------+-------+------+---------------+------+---------+------+------+----------------+
      2 | id   | select_type | table | type | possible_keys | key  | key_len | 
ref  | rows | Extra          |
      3 
+------+-------------+-------+------+---------------+------+---------+------+------+----------------+
      4 |    1 | SIMPLE      | t     | ALL  | NULL          | NULL | NULL    | 
NULL | 10   | Using filesort |
      5 
+------+-------------+-------+------+---------------+------+---------+------+------+----------------+
1 row in set (0.000 sec)

MariaDB [MEDLINE]> EXPLAIN SELECT id, GROUP_CONCAT(val) vals FROM t GROUP BY id 
LIMIT 11;
      1 
+------+-------------+-------+------+---------------+------+---------+------+------+----------------+
      2 | id   | select_type | table | type | possible_keys | key  | key_len | 
ref  | rows | Extra          |
      3 
+------+-------------+-------+------+---------------+------+---------+------+------+----------------+
      4 |    1 | SIMPLE      | t     | ALL  | NULL          | NULL | NULL    | 
NULL | 10   | Using filesort |
      5 
+------+-------------+-------+------+---------------+------+---------+------+------+----------------+
1 row in set (0.000 sec)



_______________________________________________
Mailing list: https://launchpad.net/~maria-discuss
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~maria-discuss
More help   : https://help.launchpad.net/ListHelp

Reply via email to