Mysql 我可以替换此代码以在operator中使用吗?
我们的代码使用create/drop表,同时在数据库中生成VR4队列订单 当网站数量少于250个时,代码将在操作员中使用并生成报告Mysql 我可以替换此代码以在operator中使用吗?,mysql,sql,Mysql,Sql,我们的代码使用create/drop表,同时在数据库中生成VR4队列订单 当网站数量少于250个时,代码将在操作员中使用并生成报告ce.website\u id in(“((join)”,“,@{$website\u id})。” 当我们有250多个网站时,我们的代码就是创建表(名称类似于Temp_tablename),并使用表连接而不是IN操作符。我可以替换此代码以在operator中使用吗?如果IN运算符与更多输入值一起使用,是否会出现性能问题?如Stan所述,使用临时表而不是大型IN是首选
ce.website\u id in(“((join)”,“,@{$website\u id})。”
当我们有250多个网站时,我们的代码就是创建表(名称类似于Temp_tablename),并使用表连接而不是IN操作符。我可以替换此代码以在operator中使用吗?如果IN运算符与更多输入值一起使用,是否会出现性能问题?如Stan所述,使用临时表而不是大型IN是首选方法 当MySQL从用户那里获得一个大数据块时,它会将其存储在一个临时表中,并使用连接来查看它。对于MySQL来说,这比在SQL部分的中实际查找每个值更容易 您可以跳过此临时表,方法是首先将网站列表存储在表中:
REPLACE INTO tblWebSitesToHandle
(Session_ID, WebSite)
VALUES
('**unique_number**', '**website_id**'),
('**unique_number**', '**website_id**'), ...
其中,unique\u number将是您选择的某个数字,然后在查询结束后丢弃,但它将帮助您管理要为查询处理的网站列表
然后,在您当前使用的SQL中,而不是(…)中的中,您将对该表执行联接,并从中选择相关的会话ID记录
完成后,只需从tblwebsite中删除会话ID数据即可处理Session\u ID数据,它不再需要(我相信)。这可能很有趣:尽管其他人提供了智能响应,但我仍会忍不住“吸一吸,看看”。我猜表演不会受到太大影响!