5

我正在构建一个 Twitter 应用程序来获取用户的全部关注并获取他们的特定 ID例如:1223455

我还有一个巨大的数据库,其中包含包含特定 Twitter id 的行...查看行中的示例...

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

问题是我们都知道 Twitter 的关注者越来越多(1000 个),我想知道这是一个很好的 MySQL 查询,在一个脚本运行中可能运行多达 20 次......

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,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 回答