5

フォローしているユーザー全体を取得し、特定のIDを取得するTwitterアプリケーションを構築しています例: 1223455

また、特定の Twitter ID を含む行でいっぱいの巨大なデータベースもあります...行の例を見てください...

|1| 122345   |
|2| 2232144  |
|3| 99653222 |
|4| 123232   |
|5| 2321323  |
|6| 3121322  |

問題は、Twitter がますます多くのフォロワー (1,000 人) を必要としていることを誰もが知っていることです。これは、1 回のスクリプト実行で潜在的に最大 20 回実行するのに適した MySQL クエリであるかどうか疑問に思いました...

SELECT * FROM table WHERE twitterID='132323' OR twitterId='23123' OR twitterId='23123' OR twitterId='23123' OR twitterId='23123' OR twitterId='23123' OR twitterId='23123' OR twitterId='23123

何度も何度も... 1 つのクエリで 1,000 を超える OR ステートメントが存在する可能性があります (このような同様のクエリは 20 回呼び出される可能性があります)。

これはあまり良いプログラミング手法とは思えませんが、別の方法は聞いたことがありません...??

4

3 に答える 3

6

指定子を使用しinます。

Select * from table where twitterid in (123,456,789,...)
于 2012-07-29T00:14:27.820 に答える
4

これは実に悪い考えです。MySQL は、OR ステートメントの最適化にうまく対応できません。

JOIN などを使用する方がはるかに良いでしょう

WHERE twitterId IN (
      select * 
        from followers
       where followee = whatever
)
于 2012-07-29T00:16:49.640 に答える
0

これを試して:

SELECT * 
FROM table t1
WHERE twitterID 
      IN (select twitterID 
            from twitterIDsTable t2
           where t1.twitterID = t2.twitterID)--for performance
于 2012-07-29T00:17:25.677 に答える