2017-05-02 8 views
2

先週私はサーバでSQLクエリを実行し、クエリを終了するまでに1日かかりました。 しかし、私はlocalhostで試したときに、それは高速実行されます。サーバでSQLクエリを実行するには時間がかかりました

私はこの問題を1週間にわたって見つけようとしてきましたが、解決策を見つけることができません。

+0

どのように大規模な 'subscription_hint'テーブルで、あなたもあったどのように多くの他のクエリが同時に実行されているのでしょうか? –

+0

@TimBiegeleisen私はそれが許可されていないので、私はそれをチェックできないと思います。私はちょうど質問をする。その時に実行されたクエリはこれだけです。 – rinaldy31

+0

は「オーダー・バイ」である可能性がありますか?私は昨日同様の問題を抱えていて、 'order by'によって – thekucays

答えて

1

唯一のアドバイスは、WHERE節で使用できるインデックスを追加して、処理を高速化することです。特定の日のレコードを実際に探しているので、created_dateのインデックスは実質的に役立ちます。

ALTER TABLE subscription_hist ADD INDEX c_date_idx (created_date) 

MySQLは、関数インデックスをサポートしていませんので、あなたのWHERE句でDATE(created_date)を使用すると、おそらくインデックスを利用することができません。しかし、created_dateが既にdatetime列である場合、私はDATE()でそれをラッピングする際には何のポイントも見ません。その列を直接使用してください。

SELECT 
    created_date AS `date`, 
    'registrasi_h2h' AS transaction, 
    no_ecash AS nomor_ecash, 
    IFNULL(partner_id, '') AS partner_id 
FROM subscription_hist 
WHERE created_date >= CURDATE() - INTERVAL 1 DAY AND 
     created_date < CURDATE() 
ORDER BY created_date ASC; 

日付ロジックが正しく動作することを示すデモについては、以下のリンクに従ってください。

Rextester

+0

はcreated_dateがdatetimeで日付のみを取得したいのでdate()を使用します。 – rinaldy31

関連する問題