如何为MySQL“Explain”设置虚拟值?

时间:2012-02-06 08:46:10

标签: mysql database optimization indexing explain

var q = 'SELECT * FROM stories_comments WHERE story_id=? AND user_id=? ORDER BY created_at ASC';
    mclient.query(q, [story_id, 0], function(err, results, fields){
        next(err, results);
    });

例如,这是我的代码。我想在MySQL中解释这个查询,但我没有放置story_id的值。如何用虚拟ID解释它?我希望MySQL给我一个解释声明,好像story_id是“9”,让我们说。

基本上,我只想让MySQL解释这个查询,即使我没有提供story_id或user_id。

1 个答案:

答案 0 :(得分:1)

没有值,它无法解释查询,因为它无法估计需要扫描的行数。这不仅是为了显示explain输出中的行,而是为了选择正确的索引 - 如果你有关于story_id的索引和另一个关于user_id的索引,它将选择选择较少行的索引。有时解释可以看到where子句根本不匹配行(并且将输出不可能的where子句)