如何加快此mysql联接查询

摩纳

我有以下查询,需要很长时间(大约1分钟):

SELECT `transaction`.`fuel_terminal_id`, `transaction`.`xboard_id`, `transaction`.`gas_station_id`, `transaction`.`operator_id`, `transaction`.`shift_id`, `transaction`.`fuel_type`, `transaction`.`purchase_type`, `shift`.`num` AS `shiftNum`, `shift`.`shift_state_id` AS `shiftStateId`, `shift`.`start_totalizer_dispenser_1` AS `startTotalizerDispenser1`, `shift`.`start_totalizer_dispenser_2` AS `startTotalizerDispenser2`, `shift`.`end_totalizer_dispenser_1` AS `endTotalizerDispenser1`, `shift`.`end_totalizer_dispenser_2` AS `endTotalizerDispenser2`, min(shift.start_time)AS shiftStartTime, max(shift.end_time)AS shiftEndTime, count(*)AS groupCount, sum(fuel_cost)AS sumFuelCost, sum(payment_cost)AS sumPaymentCost, sum(actual_amount / 100)AS sumActualAmount, min(start_fuel_time)AS firstFuelingDate,max(end_fuel_time)AS lastFuelingDate 
FROM `transaction` 
LEFT JOIN `shift` 
ON shift.gs_id = TRANSACTION .gas_station_id 
AND shift.terminal_id = TRANSACTION .fuel_terminal_id 
AND shift.id = TRANSACTION .shift_id 
AND shift.start_time = TRANSACTION .shift_start_time
GROUP BY `transaction`.`gas_station_id`, 
`transaction`.`fuel_terminal_id`, 
`transaction`.`shift_start_time`, 
`transaction`.`fuel_type`, 
`transaction`.`purchase_type`,  
`transaction`.`operator_id`;

我可以通过将表“ shift”中的列“ operator_id”的数据大小从VARCHAR 255更改为VARCHAR 16,并将表“ transaction”中的该列的数据类型从TEXT更改为TEXT,来加快查询速度(大约25%) VARCHAR 16.但是,我仍然需要提高速度(也许通过添加更多索引或更改它们?)。

这是EXPLAIN的结果: 在此处输入图片说明

我在《MySQL 5.7参考手册》已经读到,如果“ possible_keys”列为NULL,则没有相关索引。因此,我想知道是否有人可以帮助我了解我是否没有选择正确的索引?这些是我在表“事务”上添加的索引:

在此处输入图片说明

摩纳

好吧,我只是发现我的问题与索引或查询或数据库结构无关。当我在本地服务器上运行查询时,它很快,而在实时数据库上却很慢。经过一些搜索,我发现增加buffer_pool_size(比您的数据库大小大一点,在我的情况下,我将其从defult值(8M)增加到2G)可以提高innoDB性能。

阅读以下链接有助于我了解innoDb中的缓冲池以及如何配置它:

MySQL参考手册:innoDB缓冲池

选择innoDB缓冲池大小

设置innoDB缓冲池的内容以及原因

MySQL参考手册:配置innoDB缓冲池大小

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何加快此查询的速度?

来自分类Dev

如何优化此MYSQL查询-联接多个表

来自分类Dev

如何加快此MySQL查询的速度,以找到最接近给定纬度/经度的位置?

来自分类Dev

如何使用表联接优化此查询?

来自分类Dev

如何使用自联接优化此查询?

来自分类Dev

如何加快1.7秒Mysql查询的速度?

来自分类Dev

如何加快我的“朋友列表” MySQL查询?

来自分类Dev

MySQL如何加快查询中的UDF

来自分类Dev

如何加快我的“朋友列表” MySQL查询?

来自分类Dev

如何加快Mysql中日期时间的查询

来自分类Dev

如何对MySQL进行联接查询

来自分类Dev

如何使用正确的索引加快此慢速查询的速度?

来自分类Dev

如何使用别名列加快此查询的速度?

来自分类Dev

如何加快此循环?

来自分类Dev

如何在MySQL中执行此查询,我应该使用左联接还是右联接或内部联接使用哪一个?

来自分类Dev

加快MySQL查询

来自分类Dev

PHP加快MySql查询

来自分类Dev

加快Mysql查询搜索

来自分类Dev

需要加快MySQL查询

来自分类Dev

如何运行此MySQL查询?

来自分类Dev

如何攻击此mySQL查询?

来自分类Dev

索引sql列以加快联接查询

来自分类Dev

如何在cdbcriteria中编写此联接查询?

来自分类Dev

如何使用两个联接编写此查询

来自分类Dev

如何在联接中转换此子查询?

来自分类Dev

如何使用联接多个表编写此mysqli查询?

来自分类Dev

如何改善索引的内部联接查询Mysql?

来自分类Dev

联接表后如何在oracle中加快查询执行速度

来自分类Dev

如何加快此Rcpp功能?