查询使用SELECT *时出现空结果 - 奇怪的事情

时间:2016-05-05 19:41:32

标签: mysql

我面临着一个奇怪的问题,我在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)

知道为什么会这样吗?

提前致谢。

0 个答案:

没有答案