1. ホーム
  2. mysql

[解決済み] MySQLでselectからインデックス付きテンポラリテーブルを作成する。

2023-01-05 06:16:37

質問

私は一時テーブルを使用するストアド関数を持っています。パフォーマンス上の理由から、私はそのテーブルにインデックスが必要です。残念ながら、私は使用することはできません ALTER TABLE を使うことができません。これは暗黙のコミットを引き起こすからです。

したがって、私はこの構文に INDEX に対して tempid を作成することができます。どなたか助けていただけませんか?

CREATE TEMPORARY TABLE tmpLivecheck 
(
    tmpid INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY
)
SELECT *
FROM   tblLivecheck_copy
WHERE  tblLivecheck_copy.devId = did;

どのように解決するのですか?

自分自身で答えを見つけました。私の問題は、結合のために2つの一時テーブルを使用し、最初のテーブルから2番目のテーブルを作成することでした。しかし、Indexは作成中にコピーされませんでした...

CREATE TEMPORARY TABLE tmpLivecheck (tmpid INTEGER NOT NULL AUTO_INCREMENT, PRIMARY    
KEY(tmpid), INDEX(tmpid))
SELECT * FROM tblLivecheck_copy WHERE tblLivecheck_copy.devId = did;

CREATE TEMPORARY TABLE tmpLiveCheck2 (tmpid INTEGER NOT NULL, PRIMARY KEY(tmpid), 
INDEX(tmpid))  
SELECT * FROM tmpLivecheck;

...私の問題を解決しました。

ごきげんよう...