0

FROM_UNIXTIME は、次のようなクエリのパフォーマンスに大きく影響しますか?

        (
            (calltasks.task_dueDate = '".$date."') # Tasks of this date
            OR 
            (calltasks.task_dueDate < '".$date."' AND calltasks.task_status = 'scheduled') # Tasks still available on this date
            OR 
            (FROM_UNIXTIME(calltasks.task_executionTime, '%Y-%m-%d') = '".$date."') # Tasks finished this date
        )

それとも私はそれで大丈夫ですか??

4

1 に答える 1

2

UNIX_TIMESTAMP()UNIX時間をフォーマットされた文字列に変換してから(現在のように)比較するのではなく、変数をUNIX時間に変換してから整数を比較する方がよいでしょう$date(違いの確認は24時間以内です) 。整数の比較は、常に文字列の比較よりも高速になります。

(calltasks.task_executionTime - UNIX_TIMESTAMP('$date')) BETWEEN 0 AND 86400

または、このクエリを呼び出している言語ですぐに利用できるUNIXタイムスタンプ値がすでに$dateある場合があります。たとえば、PHPは日付をUNIXタイムスタンプとして保存します。

この方法でSQLをクエリに挿入する場合は、SQLを含めるように操作できないことを絶対に確認する必要があることに注意してください。$date疑問がある場合は、プリペアドステートメントを使用する必要があります。理由や内容がわからない場合は、BobbyTablesについて読んでください

于 2012-04-28T12:37:27.180 に答える