を実行するために13分を要し、と私はMySQLのクエリは、私は3つのテーブルを持っている
orders
下のコードを使用してそれらを結合してい30K行orders_details
を持って100kの行を超えるservices
は4行 を持っています
Fish Database.net
のスクリプトを実行すると、結果を表示する前に13分以上実行されます。
select
`o`.`created` AS `created`,
sum(`o`.`total`) AS `total`,
sum(`o`.`paid`) AS `paid`,
`od`.`service_id` AS `service_id`,
`s`.`name` AS `grp`
from ((`orders` `o`
left join `orders_details` `od` on
(
(`od`.`order_id` = `o`.`id`)
))
left join `services` `s` on
(
(`s`.`id` = `od`.`service_id`)
))
group by
`od`.`service_id`,
`o`.`created`,
`s`.`name`
order by
`o`.`created`
id
を持つすべての列名が作成され、整数主キー列- ある支払わ日時列
- 合計は、(10,2)列
- 小数ですされている名前はVARCHAR(60 )列
説明結果は
ですEDITS
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE o ALL NULL NULL NULL NULL 23558 Using temporary; Using filesort
1 SIMPLE od ALL NULL NULL NULL NULL 40304
1 SIMPLE s eq_ref PRIMARY PRIMARY 4 mydb.od.service_id 1
私は私改善/ボトルネックを見つけることができます?
は私たちに 'order_id'、' service_id'、 'created'と' name'のまだ行っていない場合は必要に応じ –
外部キーにインデックスを追加してみてください。しかし、上記のクエリーの 'explain'はもっと分析するのに役立ちますので、説明の結果を質問に投稿してください。 –
可能性指標を使用したインデックスを参照するクエリのEXPLAINを示し –