【发布时间】:2019-07-26 04:47:17
【问题描述】:
有没有更有效的方法来做到这一点?我一直在想我错过了什么。谢谢
SELECT DISTINCT eventId
FROM event_tags_map
WHERE tagId in (
SELECT tagId FROM event_tags_map WHERE eventId=114778
) ORDER BY RAND() LIMIT 5;
我在同一张桌子上打了两次,我想知道我是否可以更快地获得相同的结果。
表结构:
mysql> describe event_tags_map;
+---------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+------------------+------+-----+---------+-------+
| eventId | int(10) unsigned | NO | PRI | NULL | |
| tagId | int(10) unsigned | NO | PRI | NULL | |
+---------+------------------+------+-----+---------+-------+
索引:
mysql> show index from event_tags_map;
+----------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+----------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| event_tags_map | 0 | PRIMARY | 1 | eventId | A | 302032 | NULL | NULL | | BTREE | | |
| event_tags_map | 0 | PRIMARY | 2 | tagId | A | 604065 | NULL | NULL | | BTREE | | |
+----------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
2 rows in set (0.02 sec)
【问题讨论】:
标签: mysql sql join mysql-python