哪种方法更快且效率更高?

时间:2019-07-12 13:10:37

标签: mysql arrays node.js performance filter

环境: NodeJS,Websocket,MySQL,CentOS服务器

我到底想要什么?

这是我的MySQL数据库表“ users_history”

+-----+---------+------------------+
| ID  | UserID  |     History      |
+-----+---------+------------------+
|  1  |      1  | Login            |
|  2  |      2  | Login            |
|  3  |      1  | Added new record |
|  4  |      2  | Added new record |
|  5  |      1  | Added new record |
|  6  |      3  | Login            |
|  7  |      3  | Added new record |
|  8  |      3  | Added new record |
|  9  |      1  | Added new record |
| 10  |      2  | Deleted recoed   |
+-----+---------+------------------+

我想根据其用户ID将其历史记录发送到Websocket连接。

问题?

我有两种方法,但是我不知道哪一种更快,效率更高?

方法1

从数据库中为每个用户选择数据。

示例:

  

对于用户1:   从历史记录中选择*,其中UserID = 1

     

对于用户2:   从UserID = 2的历史记录中选择*

     

对于用户3:   从历史记录中选择*,其中UserID = 3

并根据其用户ID将其数据发送给每个用户

方法2

在一个查询中选择所有数据并存储在一个数组中,然后过滤每个UserID的数据并根据其UserID发送给用户。

示例:

  

从历史记录中选择*,其中UserID IN(1,2,3)

1 个答案:

答案 0 :(得分:-1)

数据库无法“发送”数据。相反,您SELECT所需的数据。预期的接收者都可以发起SELECT并取回结果。或者,您可以让其他代理执行SELECT,并通过某种方式将其“发送”给“用户”,也许是通过电子邮件。