検索

ホームページ  >  に質問  >  本文

MySql/MariaDB: クエリでインデックスを「直接」使用しますか?

MySql/MariaDB でクエリ内でインデックスを直接使用できるかどうか知りたいです。タイムスタンプと値のペアを含む単純な未ソートのテーブルがあるとします。

リーリー

タイムスタンプを追加してインデックスを作成:

リーリー

ソートされたタイムスタンプの順序に「すばやくアクセス」できます。

連続する値の値の差を提供するクエリを定義しましょう:

リーリー

明らかに、このクエリは条件付きであり、コストがかかります。より便利な方法は、列 myindex をテーブルに追加することです:

リーリー

そして、新しい列にタイムスタンプの時系列順を入力します (例: PHP コードを介して)

新しいクエリはよりシンプルかつ安価になります:

リーリー

新しい列 myindex は、データベース テーブル インデックス ind_ts にある程度似ています。 (なぜ) myindex の代わりに ind_ts を使用する MySql 構造はありませんか?

P粉350036783P粉350036783468日前630

全員に返信(1)返信します

  • P粉217629009

    P粉2176290092023-09-16 12:23:26

    MySQL 8.0 または MariaDB 10.2 (またはそれ以降) を使用している場合、LEAD() および LAG() を使用すると、OK の前後を簡単に表示できます。

    古いバージョンをお使いの場合は「自己結合」を行ってください。つまり、テーブル JOIN をそれ自体と結合します。次に、2 つの「テーブル」を 1 つずらして位置合わせします。これには、オフセットを簡単に行う方法を提供するために、新しい AUTO_INCRMENT を使用して一時テーブルを生成する必要がある場合があります。これは、「myindex」のアイデアよりもわずかに優れている可能性があります。

    リーリー ###それから### リーリー

    (これにより、テーブルの最初と最後の行は処理されません。)

    注:

    TEMPORARY TABLE

    は、それ自体に JOIN できないため、使用できません。

    返事
    0
  • キャンセル返事