将CSV传递给Mysql存储过程:WHERE IN(CSV)

时间:2016-01-11 13:15:04

标签: php mysql sql database denormalization

我一直在考虑针对很多流量对数据进行反规范化。有一些明显的技巧 - 在另一个表中保留计数并使用事务来最小化“搜索”时间。

因此,我正在考虑一个多个用户可以拥有多个朋友的系统。并说如果你有一百万用户,每次你想加载朋友时,你可以有一个非常大的表。在那里,我将使用包含每个交互的朋友事件的表。还是发件人和收件人字段。在这方面,仍然会有很多潜在的记录/流量。

现在我不太了解关于SQL调优的事情,或者当非规范化很多但是我想知道将用户朋友的快速列表存储为CSV(在朋友事件更改时管理此事件)是有意义的交易)然后将其传递给myqsl?类似的东西:

SELECT * FROM FRIENDS WHERE ID IN (1,2,3)

现在,为了防止SQL注入,MySQL在运行语句时会删除CSV中除第一项以外的所有项目,因此它只扫描1.显然有充分的理由。

现在,此查询始终是系统启动的(没有来自用户的输入),因此输入应该是干净的/不受注入,因此我可以将其实现为未过滤的查询。没有调用存储过程....?....

这听起来怎么样?在这种情况下,并扩大规模 - IN CLAUSE是否有意义? MySQL可以处理对这么多记录的许多调用吗?

非常感谢任何帮助!

0 个答案:

没有答案