我面临着一个奇怪的问题,我在10多年的时间里从未见过这样的事情。
带有8M行的 InnoDB 表,此表用于存储2个其他表(页面和关键字)之间的引用
| Field | Type | Null | Key | Default | Extra |
+-----------------+---------------------+------+-----+---------------------+----------------+
| id | int(11) unsigned | NO | PRI | NULL | auto_increment |
| page_id | int(11) unsigned | NO | PRI | 0 | |
| keyword_id | int(11) unsigned | NO | PRI | 0 | |
| avg_kc | tinyint(3) | YES | | NULL | |
| rank_on_page | tinyint(2) | YES | | NULL | |
| created_at | timestamp | NO | | CURRENT_TIMESTAMP | |
| updated_at | timestamp | NO | | 0000-00-00 00:00:00 | |
+-----------------+---------------------+------+-----+---------------------+----------------+
问题是,如果您使用SELECT *
,则会返回Empty set
mysql> select * from pages_metrics where keyword_id=2385 and page_id=6004 ;
Empty set (0.00 sec)
但是,如果您只选择一些字段,则查询运行良好。
mysql> select id, page_id, keyword_id from pages_metrics where keyword_id=2385 and page_id=6004;
+---------+---------+------------+
| id | page_id | keyword_id |
+---------+---------+------------+
| 8469199 | 6004 | 2385 |
+---------+---------+------------+
1 row in set (0.00 sec)
我运行analyze table
并且看起来都很好。
mysql> analyze table pages_metrics;
+------------------------+---------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+------------------------+---------+----------+----------+
| keywords.pages_metrics | analyze | status | OK |
+------------------------+---------+----------+----------+
1 row in set (0.34 sec)
知道为什么会这样吗?
提前致谢。