1

最適化しようとしているMysqlスクリプトでこのコード行に出くわしました(スクリプトの実行には7時間以上かかります)。この行が実行時間の 60% 以上を占めていることがわかりました。

# #Fill temp table
SELECT

    DISTINCT clv_temp(view01.user_email,,user_number) AS `Authentic`

FROM(

SELECT DISTINCT u_mail, u_phone

FROM
Cust_orders
ORDER BY order_date ASC

)view01;
4

1 に答える 1

3

過剰な実行時間はおそらくカスタム関数clv_tempの定義にあるため、その定義を見つける必要があります。

現在、この関数は、サブクエリによって返されるすべての行に対して実行されていることに注意してください。つまり、テーブル内のu_mailとの一意の組み合わせごとに実行されます。これは通常、データを処理する方法としては非常に非効率的であり、一度に 1 行ずつではなく、セットごとに現在実行されているロジックを実装する必要があるでしょう。u_phonecust_ordersclv_temp

于 2013-06-05T11:20:37.120 に答える