2014-02-27 68 views
0

如果要在执行中使用索引(任何索引),我只想在巨大的表上执行SELECT语句。我已阅读this,但这里看看:只使用索引执行MySQL查询

“你也可以使用FORCE INDEX,其作用像USE INDEX(起始-TC),但与另外一个表扫描被认为是非常昂贵的。换句话说。 ,只有在无法使用某个给定索引在表中查找行时才使用表扫描。“

这不是我想要的。我希望不是“通过”进行全表扫描,MySQL会以特定的错误/警告/信息回复我,明确告诉我由于没有可用索引而无法执行查询。

这是可能的吗?我实际上做的是接受来自客户端页面的参数,这些参数基本上是表中的任何列。所以,我想采用这些参数并将它们传递给WHERE子句,要求MySQL只通过索引执行结果查询。

+0

使用'EXPLAIN'并检查索引是否会被使用? (但是请注意,这不是保证 - 在解释和实际情况可能不同的情况下有极少数情况) –

+0

谢谢,我忘了说我希望以编程方式完成此任务。我在这个问题上加了这个。 – OmarOthman

+0

这就是问题所在?你可以做到这一点。即首先通过'EXPLAIN'进行查询。然后,如果相应的列符合您的期望,请运行查询 –

回答

0

您的查询使用EXPLAIN和检查key

EXPLAIN 
SELECT * FROM users WHERE columnWithIndex = 4 

你的结果会是这样的:

1 SIMPLE users ref indexName indexName 8 const 1 

如果键列不为空,则SQL将使用索引您的查询和你之后可以运行它。