Sql选择语句优化

2024-10-04 11:28:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我在sql中创建了一个测试表,其信息模式如下所示:

Database Schema and Table data

现在,我使用python脚本提取此信息,其代码如下所示:

import pandas as pd
import mysql.connector
 
db = mysql.connector.connect(host="localhost", user="root", passwd="abcdef")
pointer = db.cursor()
pointer.execute("use holdings")
x = "Select * FROM orders where tradingsymbol like 'TATACHEM'"
pointer.execute(x)
rows = pointer.fetchall()
rows = pd.DataFrame(rows)
stock = rows[1]

SQL TABLE Imported as Pandas DF

生产表包含200个唯一的交易符号,其模式与测试表类似

我对以下声明表示怀疑:

x = "Select * FROM orders where tradingsymbol like 'TATACHEM'"

我将不得不将tradingsymbols的值替换200倍,这是无效的

有没有一个有效的方法来做到这一点


Tags: fromimport信息executedbconnectormysql模式
1条回答
网友
1楼 · 发布于 2024-10-04 11:28:06

如果我理解正确,您的问题是您希望避免对每个交易符号发送多个查询,对吗?在这种情况下,下面的MySQL IN可能会有所帮助。然后,您只需向包含所有所需TradingSymbol的数据库发送一个查询。如果你想用不同的交易符号做不同的事情,你可以选择熊猫的子集

另一个性能改进可能是pandas.read_sql,因为这在某种程度上加快了数据帧的创建

为了提高效率,还有两件事需要补充:

  • 确保在MySQL中为tradingsymbols编制索引,以加快查找过程
  • 将tradingsymbols设置为枚举,以确保不接受任何打字错误或类似错误。否则,上述“IN”方法也不起作用,因为它会进行全文比较

相关问题 更多 >