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」を検索し、そのカウントを table に返します。テーブルに 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 に答える