python - 如何提高pandas中mysql查询的处理速度
问题描述
我在元组中的 ID 如下
ids = tuple(df1['ids'])
ids 有 100k 行
我的查询
q_id=f'''
SELECT id, COUNT(*) AS Count
FROM NEWS
WHERE status = 'JOINED' AND id IN {ids}
GROUP BY 1
connection
是一种使用用户名和密码建立连接的方法
df2 = connection('mysqldb', q_id)
需要太多时间才能得到结果。如何提高pandas中mysql查询的处理速度?
解决方案
请提供SHOW CREATE TABLE news
。
它需要包括
INDEX(status, id)
是id
吗PRIMARY KEY
?如果是这样,那么这是一个相当奇怪的查询:
SELECT id, COUNT(*) AS Count
FROM NEWS
WHERE status = 'JOINED'
AND id IN {ids}
GROUP BY 1
因为所有的计数都是“1”。(这是因为PRIMARY KEY
是“独特的”)。
要找出这些 id 中有多少是'JOINED
':
SELECT COUNT(*) AS Count
FROM NEWS
WHERE status = 'JOINED'
AND id IN {ids}
要找出哪些id 是'JOINED
':
SELECT id
FROM NEWS
WHERE status = 'JOINED'
AND id IN {ids}
推荐阅读
- python - Pandas 'to_json' 函数返回错误的日期格式
- android - Android 中的 .svg 图标质量不佳
- ios - 为什么不调用 viewDidLoad 函数?
- c# - 将对象列表中的字段绑定到 Dropdownlist MVC
- typescript - 环回:找不到图像的路径
- css - 您可以将 Angular 主题原色应用于 div 吗?
- reactjs - 如何使用 React-Enzyme 在子组件上设置属性
- java - 如何计算是/否响应的百分比?
- java - 如何在 Android 应用程序中实现注销
- unix - sed:用同一行中的另一个模式替换找到的模式