2

MYSQL Server 5.0 を使用しており、SQL Server の次の文を使用しようとしていますが、まったく機能していません。これを Mysql にも適用する方法はありますか。どうもありがとうございました。

CREATE NONCLUSTERED INDEX [IX_Dave_General] ON [dbo].[Stock]

    (
            [ArticleID] ASC,
              [TranDate] DESC,
            [TranCode] ASC
    )
    INCLUDE ( [Items],
    [Price]) WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
4

2 に答える 2

6

元のSQL Serverインデックスは 2 つの機能を使用していました。カバー インデックス ( の下に非キー カラムをINCLUDE含む) と混合ソート方向 (ASCおよびDESCカラム) です。

ではどちらもサポートされていませんMySQL

それでもインデックスが必要な場合 (3 つの列すべてで完全に一致する場合など)、@Ray の回答を使用してください。

于 2012-11-14T21:54:20.393 に答える
4

テーブルが「Stock」で、(ArticleID、TranDate、TranCode) の複合インデックスが必要であると仮定します。

CREATE INDEX your_index_name ON Stock (ArticleID,TranDate, TranCode);

myISAM または InnoDb ストレージ エンジンの MySQL で他の情報が可能かどうかはわかりません。

カバリング インデックスを作成するために他のフィールドを含めるには、それらを宣言に追加するだけです。

CREATE INDEX your_index_name ON Stock (ArticleID,TranDate, TranCode, Items, Price);

あなたのステートメントに「含まれている」アイテムと価格は、在庫テーブルの一部であると想定しています。

ここでの大きな犠牲は、このような大きなカバリング インデックスを持つための挿入とディスク領域にあることに注意してください。

于 2012-11-14T21:46:29.250 に答える