【笔记】记一次mysql IN 大量ID优化方案

背景

基于某些业务开发过程中,会遇到这样的查询语句:SELECT * FROM table where id in(1, 2, 3), 但是当IN里面的数据量非常大的时候,有些数据库会对IN 的数据量有大小限制,比如Oracel大小限制是1000,因此如果能有一种替代IN 大量数据,并且性能还不错的方案就好了。

实战

1、使用IN方案查询结果,查询时间为:0.078s,总数据量60多万。

select * from designmaterial ds where ds.materialid in(
“00010448”,
“00010450”,
“00010454”,
“00010455”,
“00010457”,
“00010460”,
“00010466”,
“00010470”,
“00010474”,
“00010475”,
“00010477”,
“00010484”,
“00010487”,
“00010489”,
“00010491”,
“00010492”,
“00010493”,
“00011018”,
“00011019”,
“00011020”,
“00011071”,
“00011072”,
“00011073”)

2、改用替代方案,查询时间为:0.053S左右,总数据量60多万

SELECT *
FROM (
SELECT “00010448” cid UNION ALL
SELECT “00010450” UNION ALL
SELECT “00010454” UNION ALL
SELECT “00010455” UNION ALL
SELECT “00010457” UNION ALL
SELECT “00010460” UNION ALL
SELECT “00010466” UNION ALL
SELECT “00010470” UNION ALL
SELECT “00010474” UNION ALL
SELECT “00010475” UNION ALL
SELECT “00010477” UNION ALL
SELECT “00010484” UNION ALL
SELECT “00010487” UNION ALL
SELECT “00010489” UNION ALL
SELECT “00010491” UNION ALL
SELECT “00010492” UNION ALL
SELECT “00010493” UNION ALL
SELECT “00011018” UNION ALL
SELECT “00011019” UNION ALL
SELECT “00011020” UNION ALL
SELECT “00011071” UNION ALL
SELECT “00011072” UNION ALL
SELECT “00011073”
) AS tmp,designmaterial t
WHERE tmp.cid = t.materialid;

总结

经过mysql数据库大量测试结果替代方案比IN语句快了不少,特别是数据量比较大的时候,所以以后如果遇到IN查询过程可以使用该替代方案。

<think>好的,用户的问题是寻找适合技术人员或开发者的副业推荐。首先需要明确用户的需求,他们可能有技术背景,希望利用自己的技能在业余时间赚取额外收入。接下来要考虑哪些副业适合技术人员,可能需要结合他们的专业特长,比如编程、开发、数据分析等。 首先,应该调用网络搜索工具,查找当前流行的技术人员副业类型。可能的选项包括自由职业开发、在线教学、开发SaaS产品、技术博客、参与开源项目、远程技术支持、算法交易、API开发、技术测评、兼职远程工作等。 然后需要验证这些选项的可行性和市场需求。例如,自由职业平台如Upwork和Fiverr上是否有足够的技术任务,在线教育平台对技术课程的需求如何,SaaS产品的开发成本和收益情况等。同时,考虑技术人员的不同技能方向,比如前端、后端、数据分析、AI等,可能适合不同的副业类型。 接下来需要整合信息,确保每个推荐的副业都有具体的操作步骤和资源平台。例如,自由职业需要注册平台、完善资料、竞标项目;在线教学需要选择平台、设计课程、推广内容。同时要注意用户要求的格式,避免使用步骤词汇,用方法或分类来组织内容,并换行分隔。 还需要检查是否有遗漏的重要副业类型,比如技术测评或参与众测平台,这些可能对喜欢测试新技术的开发者有吸引力。另外,技术写作或创建YouTube频道也是可能的选项,但需要一定的内容创作能力。 最后,确保回答符合格式要求,不使用第一人称,引用内容分散在回答中,不集中在末尾。每个副业推荐要包含具体的方法、平台和注意事项。例如,开发SaaS产品需要明确目标用户和最小可行性产品,而算法交易则需要量化金融知识和风险管理。 生成相关问题部分时,要基于用户的问题和回答内容,提出深入或相关的问题,如自由职业平台选择、技术课程制作技巧、SaaS启动成本等,确保问题有实际参考价值,并符合格式要求。</think>根据技术人员的技能特点,以下副业方向具有较高可行性和市场需求,按照实施难度和收益潜力分类呈现: **技术咨询服务** 通过Toptal、Catalant等专业平台提供架构设计或代码审查服务,时薪可达$50-$150。技术博客维护者可通过Google AdSense实现被动收入,每千次展示收益$3-$8 **产品化解决方案** 开发浏览器插件并通过Chrome Web Store分发,典型收益模式为订阅制($2-$10/月)。构建API服务在RapidAPI等平台销售,头部开发者月收入超过$1,000 **教育内容产出** 在Udemy创建完整课程(平均售价$20-$200),平台分成比例为50%。技术类YouTube频道可通过AdSense获取收益,每千次观看约$3-$8 **量化交易开发** 使用Python构建交易策略: ```python # 均值回归策略示例 import pandas as pd def mean_reversion_strategy(data): rolling_mean = data['close'].rolling(window=20).mean() signal = np.where(data['close'] < rolling_mean * 0.95, 1, np.where(data['close'] > rolling_mean * 1.05, -1, 0)) return signal ``` **远程协作项目** GitHub Sponsors支持开发者通过开源项目获得赞助,头部项目月收入$5,000+。远程工作平台如Arc.dev提供兼职开发岗位,时薪范围$40-$120 实施建议: - 优先选择与主业技术栈重叠度高的领域 - 采用渐进式时间投入(每周5-10小时起步) - 建立可复用的代码库和技术资产 - 使用Stripe、PayPal等成熟支付解决方案 收益公式参考: $$月收入 = (时薪 \times 有效工时) + (产品单价 \times 用户数 \times 付费率) + 广告分成$$
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值