mysql - 加快mysql查询
问题描述
我有一个 mysql 查询来连接四个表,我认为最好是连接表,但现在 mysql 数据越来越大,查询似乎导致应用程序停止执行。
SELECT
`purchase_order`.`id`,
`purchase_order`.`po_date` AS po_date,
`purchase_order`.`po_number`,
`purchase_order`.`customer_id` AS customer_id ,
`customer`.`name` AS customer_name,
`purchase_order`.`status` AS po_status,
`purchase_order_items`.`product_id`,
`purchase_order_items`.`po_item_name`,
`product`.`weight` as product_weight,
`product`.`pending` as product_pending,
`product`.`company_owner` as company_owner,
`purchase_order_items`.`uom`,
`purchase_order_items`.`po_item_type`,
`purchase_order_items`.`order_sequence`,
`purchase_order_items`.`pending_balance`,
`purchase_order_items`.`quantity`,
`purchase_order_items`.`notes`,
`purchase_order_items`.`status` AS po_item_status,
`purchase_order_items`.`id` AS po_item_id
FROM `purchase_order`
INNER JOIN customer ON `customer`.`id` = `purchase_order`.`customer_id`
INNER JOIN purchase_order_items ON `purchase_order_items`.`po_id` = `purchase_order`.`id`
INNER JOIN product ON `purchase_order_items`.`product_id` = `product`.`id`
GROUP BY id ORDER BY `purchase_order`.`po_date` DESC LIMIT 0, 20
我的问题确实是需要花费大量时间才能完成的查询。有没有办法加快这个查询或改变这个查询以更快地检索数据?
解决方案
您需要确保purchase_order.po_date
所有 id 列都已编入索引。您可以使用以下查询进行检查。
SHOW INDEX FROM yourtable;
推荐阅读
- django - 接下来是什么:为 django all-auth 创建成功令牌后;如何同步谷歌日历?
- gradle - 无法在 gradle 中配置属性文件
- arrays - redim rows 动态数组给出类型不匹配错误
- angular - 如果我模拟一个 Angular 组件,如何防止使用原始组件?
- .net-core - .nuspec 中未设置 copyToOutput,即使在 csproj 文件中设置了内容
- machine-learning - 我可以用包含(时间序列+分类+数字)和分类器因变量(0,1)的自变量构建一个机器学习模型吗
- react-native - 带有选项的列表项
- powershell - 通过 O365 使用 Powershell 添加邮箱
- vba - VBA len函数不传递长度
- node.js - 来自 Google Smart Home SDK 的空请求