4

したがって、リレーショナル データベースには「最後の行」などというものがないことはわかっていますが、自分が何をしたいのかを説明するのにこれ以上の言葉は見つかりませんでした。次のようなテーブルがあります。idAUTO_INCREMENTフィールドで、timeは現在の Unix タイム スタンプです。異なる行に同じタイムスタンプを付けることができることに注意してください。

    ╔════╦════════════╦════════════╦═════════════╦════════════╗
    ║ id ║  field_1   ║   field_2  ║   field_n   ║    time    ║
    ╠════╬════════════╬════════════╬═════════════╬════════════╣
    ║  1 ║ data_field ║ data_field ║ data_field  ║ 1369748934 ║
    ║  2 ║ data_field ║ data_field ║ data_field  ║ 1369748935 ║
    ║  3 ║ data_field ║ data_field ║ data_field  ║ 1369748936 ║
    ║  4 ║ data_field ║ data_field ║ data_field  ║ 1369748936 ║
    ║  5 ║ data_field ║ data_field ║ data_field  ║ 1369748938 ║
    ║  6 ║ data_field ║ data_field ║ data_field  ║ 1369748939 ║
    ╚════╩════════════╩════════════╩═════════════╩════════════╝

私がやりたいのは、最高のtimeフィールドから検索を開始する選択です。最低から最高にソートされていることがわかっているWHEREので、他のすべての行が一致しないため、最初の行が私の句に一致しないときに検索を停止したいそれも。MySQL はすべての行を検索すると思いますが、データ構造を知っていて、必要なデータの場所を知っているので、テーブル全体を検索する必要はありません。また、 を使用するORDER BYと、句のすべての内容がWHERE最初に実行されると思われるため、基本的に行セット全体を検索してから順序付けます。LIMIT重要なことの 1 つは、句を使用するために取得される行数がわからないことです。

これはクエリの例です。

SELECT fields FROM table WHERE time > timestamp

そのため、特定の日付から現在までのすべての結果を取得したいと考えています。

ご助力ありがとうございます。

4

3 に答える 3

2

タイムスタンプ フィールドにインデックスを付けるだけです。Mysql がそれを処理します。

于 2013-05-28T13:11:10.660 に答える
1

私がやりたいのは、最高の時間フィールドから検索を開始する選択です。最低から最高の順に並べ替えられていることがわかっているので、いつ検索を停止したいのですか...

特定の条件が満たされた後にクエリを停止するようにMySQLに指示できるとは本当に思いません。

実際のところ、あなたも気にする必要はないと思います。クエリはデータベースの仕事であり、非常にうまく機能します。パフォーマンスの問題であれば、何世紀にもわたるまで違いは見られないはずです:)

于 2013-05-28T13:06:07.000 に答える