sql >> データベース >  >> RDS >> Mysql

SQLの間隔範囲で効率的に結合する

    すべてが内部でどのように機能するかはわかりませんが、状況に応じて、d1からすべての値を「ロールアウト」し、そのテーブルに参加するテーブルを試してみることをお勧めします。このようにして、クエリエンジンは、探している値に一致する境界の組み合わせを見つける必要がなく、適切なレコードを「正確に」特定できます。

    例:

    x value
    a  1
    a  2
    a  3
    b  5
    b  6
    b  7
    b  8
    b  9
    b 10
    b 11
    c 19 etc..
    

    値列(**)にインデックスがある場合、これは、元のd1テーブルIMHOの開始と終了の間で結合するよりもかなり高速であるはずです。

    もちろん、d1に変更を加えるたびに、ロールアウトされたテーブルも調整する必要があります(トリガー?)。これが頻繁に発生する場合は、最初に得たよりも、ロールアウトされたテーブルの更新に多くの時間を費やすことになります。さらに、間隔の一部が非常に大きい場合、これにはかなりの(ディスク)スペースがすぐにかかる可能性があります。また、これは、整数以外の数値を探す必要がないことを前提としています(たとえば、値3.14を探す場合はどうなりますか?)

    (ここで(value、x)で一意のものを試すことを検討してください...)




    1. SQLServer-印刷できないASCII文字をすべて削除します

    2. ClusterControlでのProxySQLクラスタリングの概要

    3. MariaDBでのUNHEX()のしくみ

    4. mysqlコマンドラインユーティリティを使用してmysql内のすべての予約語を一覧表示する方法はありますか