0

有没有办法进行选择查询,在表格中搜索给定的单词,如果找到,则退出查询并且不继续计数?

例如我有一个表(t1)有值:

id         tag   tagdate
1         my     1-1-2012
2         name   1-1-2012
3         you    1-1-2012
4         foo    1-1-2012
5         make   1-1-2012
6         ir     1-1-2013
7         too    1-1-2013
..        ..     ........
..        ..     ........
..        ..     ........
100000    foo    1-1-2013

例如,我将进行查询以确保 'foo' 单词是否存在,如果存在则返回 1 并停止继续查询。

我现在进行的查询是一个计数,以确保该单词是否存在于表中:

select count(tag) from t1 where tag = 'foo'

但是该 Sql 语句在所有表中搜索单词 'foo' 并返回其在表中的计数,如果表中有 100,000 条记录,则查询将在所有 100,000 条记录中搜索 'foo' 单词。当我们只想知道'foo'是否存在于桌子上时,这会浪费时间。

那么是否有任何语句可以在表格中搜索单词并找到单词然后停止读取表格并返回 1 或类似的东西?

4

3 回答 3

1

我会这样做:

SELECT EXISTS(SELECT NULL FROM t1 WHERE tag = 'foo')

如果标签 foo 不存在,这将返回 0 (FALSE),否则返回 1 (TRUE)。在列上使用索引tag将避免全表扫描:

CREATE INDEX idx_tag ON t1 (tag);
于 2013-04-17T06:55:18.663 回答
0

您可以尝试索引以避免全表扫描。

http://dev.mysql.com/doc/refman/5.5/en/optimization-indexes.html

于 2013-04-17T06:42:39.453 回答
0

也许是这样的:

SELECT IFNULL(SIGN(id), 0) FROM t1 WHERE tag = 'foo'
LIMIT 1
于 2013-04-17T06:29:29.270 回答