mysql - 从 VBA 调用时,MySql 查询需要很长时间才能执行
问题描述
我正在尝试使用 Excel Vba 从 MySql 数据库中检索一些数据。一切正常……但 MySql 查询执行时间过长。
这是我的代码:
SELECT
d.DATE,
c.name,
c.address,
c.state_name,
c.contact_no,
d.AMOUNT,
d.BY_NAME,
d.NARATION,
t.REMARK
FROM
database1.data d
JOIN
(
SELECT DISTINCT
cust_id,
OR_NO
FROM
database1.ordbill
) o ON SUBSTRING_INDEX(database1.d.NARATION,
':',
-1) = o.OR_NO
JOIN
database1.contact c ON o.cust_id = c.id
JOIN
database1.total t ON t.VCH_NO = d.VCH_NO
WHERE
d.PARTY_NAME = 'advance' AND(
d.`BY_NAME` = 'Bank1' OR d.`BY_NAME` = 'CASH' OR d.`BY_NAME` = 'Bank2'
) AND d.DATE BETWEEN '2019-09-01' AND '2019-09-30'
ORDER BY
d.DATE ASC `
解决方案
假设您已经在表联系人 pk id 上建立了索引索引
SELECT *
FROM `loans`
WHERE `date` >= '2019-11-25'
AND `date`<='2019-11-28'
AND `designation` LIKE '%sdf%'
why does this happen ?
SELECT d.DATE
,c.name
,c.address
,c.state_name
,c.contact_no
, d.AMOUNT
, d.BY_NAME
, d.NARATION
,t.REMARK
FROM database1.data d JOIN (
SELECT DISTINCT cust_id, OR_NO FROM database1.ordbill
) o ON SUBSTRING_INDEX(database1.d.NARATION,':',-1)=o.OR_NO
JOIN database1.contact c on o.cust_id=c.id
JOIN database1.total t on t.VCH_NO=d.VCH_NO
WHERE d.PARTY_NAME = 'advance'
AND (d.`BY_NAME` = 'Bank1' OR d.`BY_NAME` = 'CASH' OR d.`BY_NAME` = 'Bank2')
AND d.DATE BETWEEN '2019-09-01' AND '2019-09-30'
ORDER BY d.DATE ASC
确保你也有适当的复合索引
table data columns(PARTY_NAME, BY_NAME, DATE, VCH_NO )
还有一个索引
table total column (VCH_NO)
推荐阅读
- amazon-web-services - AWS lambda nodejs 在使用 X-RAY 时显示错误
- python - 烧瓶 whooshalchemy 错误:ModuleNotFoundError:没有名为“flask.ext”的模块
- python - 如果在调试模式下我得到 200 OK,如何修复 CherryPy 中的 404 错误?
- php - 仅当某些单词不在其前面时,字符串中的粗体字
- elasticsearch - 更新后 ElasticSearch 刷新
- html - 与 ul 一起浮动
- java - Sikuli 与等待条件的硒错误集成
- c# - 从 C# 中的另一个类获取一个类的公共变量的值
- javascript - 尝试在 fullCalendar.js 中使单个事件可编辑
- text - FittedBox 和文本空白问题