0

ORDER BY 句のタイムスタンプに CONVERT_TZ() を使用する理由を教えてください。この場合、タイムスタンプは常に UTC になります。

私が使用しているコードの一部でそれを見つけましたが、これは現在 mysql_tzinfo_to_sql のためにバグがあるため、削除したいと思います。

SELECT や WHEN などの他の場所で使用する理由がわかります。しかし、ORDER BY でそれを使用する正当な理由はありますか?

4

2 に答える 2

1

それらがすべて同じタイムゾーンに変換される場合、変換は2つの理由でなくなるはずです。

  • インデックス作成を中断します
  • DSTシフトの前後で問題がソートされる可能性があります(時刻が戻されると、現地時間に変換されるときに、後のUTCタイムスタンプが前のタイムスタンプよりも前にソートされる場合があります)

もちろん、ロジックが後者に依存している場合は、機能の変更であるため、そのままにしておくことをお勧めします。

于 2012-10-06T06:25:10.547 に答える
0

いいえ、これを行うべきではありません。列の関数でORDERBYを実行すると、その列のインデックスを効果的に使用できなくなります。ここで関数呼び出しを削除し、値自体で並べ替える必要があります。列にインデックスが付けられている場合、これにより大幅な速度向上が見込めます。

于 2012-10-06T06:23:24.360 に答える