- ベストアンサー
データがないテーブルの問い合わせが遅い
- 一時的に使うTEMPテーブルからデータを抽出するSQLのパフォーマンスが低下しています。SELECT文のCOSTが高く、返答が遅い状態です。
- データがないテーブルからデータを抽出するSQL文は通常はCOSTが低く、返答も早いはずですが、TEMPテーブルを使用した場合には高いCOSTと遅い返答が発生しています。
- 対策としては、夜間にTEMPテーブルをtruncateし、analyze処理を行うことでパフォーマンスを改善することができます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
関連するQ&A
- テーブル属性変更後のデータ移動
あるテーブルのキー項目をnumberからvarchar2に変更します。 テーブルの全件を仮テーブルを作成してコピー 元テーブルをTRUNCATE後、型変換 仮テーブルのデータを元テーブルへコピー という流れで、それぞれSQL文はできましたが、 仮テーブルのデータを元テーブルへコピーを実現する SQLが思い浮かびません。 insert into AAA select * from BBBだと、属性もコピーされてしまう? とのことで、ご教授お願いいたします。
- ベストアンサー
- Oracle
- SQLローダーで複数のCSVファイルのデータを一つのテーブルにInsertしたい
お世話になります、 以下のようにデータをSQLLDRでインサートしようと思っているのですが、複数のCSVファイルのデータを一つのテーブルにInsertしたい場合にどのようにすればいいか教えてください。 --バッチファイル sqlldr userid=fmwuser/fmwuser@fmw001 control=ctl/AUTHORITY.CTL log=section1.log data=csv/AUTHORITY.csv --CTLファイル LOAD DATA TRUNCATE INTO TABLE AUTHORITY FIELDS TERMINATED BY ',' ( AUTHORITYCODE ,AUTHORITYNAME,EXECUTIVE) CTLファイルでTRUNCATEを付けるとテーブルを初期化してからインサートするからむりですよね... TRUNCATEをはずすと、データが入っているテーブルに対してSQLLDRは使用できないと怒られるし... CSVファイルを一つにまとめるしかないのでしょうか?
- ベストアンサー
- その他(データベース)
- テーブルの一部の内容をまとめて、別テーブル上に更新したい
テーブル(tA)のカラム(cA cB)を入れ替えたいと思っています。 (全カラムではなく、一部分だけの入れ替えです。) そこで、一時テーブルを作成し、 元テーブル→一時テーブル(入れ替え部分だけ)→元テーブル で対象となるカラムを入れ替えようと思いました。 一時テーブルに、カラムを入れ込むまでは出来たのですが、一時テーブルから、元のテーブルに入れ込むSQLがどうしてもわからず、教えていただきたく書き込みました。 行ったSQLとしては、 1)INSERT INTO TEMP(Id,Date,cA,cB) SELECT Id,Date,cA,cB FROM tA WHERE Id=XXXX; 2)UPDATE tA SET cA=(SELECT cA FROM TEMP WHERE Id=XXXX AND tA.Date = TEMP.Date ) WHERE Id=XXXX; といった形で試してみました。 ご教授、宜しくお願いします。
- ベストアンサー
- MySQL
- SQL2000でのTRUNCATE TABLE
お世話になります、AccessからSQL2000に接続し、 TRUNCATE TABLEを使いテーブルのデータをクリアしたいのですが、どのようにしたらよろしいのでしょうか。御存知の方がいらっしゃいましたら御教授ください。よろしくお願いします。
- ベストアンサー
- その他(データベース)
- ASP.NET:複数結合テーブルのデータ変更方法について
ASP.NET:複数結合テーブルのデータ変更方法について こんにちは。 現在Visual Studio2008(ASP.NET、ADO.NET) +SQL Server2005 Stdの環境でデータベースを参照したWebアプリケーションを作成しています。 GridViewを使い、データベースの内容を表示し、修正や追加、削除を行いたいと思っています。 (SQLのUpdate,Insert,Deleteに該当) 主キーが設定された単独のテーブルに対しては、GridView内のデータソースでデータベースを選び、 該当のテーブルを選択。その後「INSERT,UPDATEおよびDELETEステートメントの作成」オプションを選ぶことでこれらの変更方法が簡単に実装できるのを確認しております。 しかし、主キー外部キーの関係を持つ2つ以上のテーブルを結合したものに関してこれらの変更を行う場合は通常どのようにするのでしょうか。 何かヒントになるキーワードや参考になるコードを教えていただけないでしょうか? 単独のテーブルの時と同じく、結合したテーブルデータ(ビューに該当)をGridViewに表示し、そのGridView上で変更を行いたいと思っています。 SQL Server側でこれらのテーブルを結合したViewを作成し、これを選ぶことでGridViewに表示する事が可能なのは確認したのですが、やはり「INSERT,UPDATEおよびDELETEステートメントの作成」オプションは選択できませんでした。 以上よろしくお願いいたします。
- ベストアンサー
- Microsoft ASP
- 配列のキーとvalueをテーブルに書き込めますか
いつもお世話になっております。 下記方法で 配列のデータのみinsertすることができました。 foreach($b as $Key =>$Value){ $sql ="INSERT INTO temp_memo (stylecode) VALUES ('{$Value}')"; mysql_query($sql); } テーブルには key と stylecodeの二つのフィールドがあります。 上記の方法だと 下記 value のみのinsertです。 key stylecode 0 りんご 0 みかん 0 いちご key も同時に テーブルに書き込むことは 可能でしょうか。 いろいろ検索してみましたが 見つかりませんでした。 初心者です。 どうかよろしくお願いいたします。
- ベストアンサー
- PHP
- データの更新方法について
データを更新するときSQLで DeleteしてInsertする更新方法と Updateを行う更新方法とがあると思うのですが この使い分け、切り分けはどういう視点になるのでしょうか 私はDeleteしてInsertする方が簡単なので Delete + Insertをよく使っています。
- 締切済み
- SE・インフラ・Webエンジニア
- テーブルに入っているデータと重複チェックしたい
やりたいこと: phpを実行して取得したデータの内容と既にDBのテーブルに格納されているデータを 比較して、 異なっていれば、新しいデータとして INSERT INTO文で テーブルにデータを登録する。 同じであれば、登録しない。 という処理がしたいです。 $sql = "select * from hoge where url= $page_uri"; $kakunin = mysql_query($sql , $db ); if ( $page_uri == $kakunin ){ //同じデータならスキップ break; } else{ $sql = mysql_query("INSERT INTO hoge VALUES (0,'$page_uri','$pon')"); と書いているのですが、以下のエラーが出てしまいます。。 Fatal error: Cannot break/continue 1 level in /www/xx.php on line 42 これは、breakは使えないよ ってことでしょうか? breakでなくても やりたいことが実現できればこだわりはないのですが、、 アドバイスよろしくお願いします。
- 締切済み
- PHP
- 配列内のデータを1つのテーブルに登録。
配列内のデータを1つのテーブルに登録。 お世話になっております。 以下のような構成のテーブルがあり、カラム名1、2、3、4と100まであるのですが、そこへ 配列内にある100を数えるデータを登録するには、どのようなSQL文が適切なのでしょうか? no id date 1 2 3 4 5 6 ...... 100 安易に、$sql = "INSERT INTO test values(0, '$id', '$date', '$randam[0]', '$randam[1]', '$randam[2]',....とも考えたのですが、他に効率のいいものがあるのでは?と思い、投稿した次第です。色々と考えてはいるのですが他に思いつかないので・・ 補足:配列にあるデータはランダムな数値を格納してあり、このSQL文の前に、配列を生成したものとなっております。 以上、お忙しいなか恐縮ですがご指導のほど宜しくお願い申し上げます。
- ベストアンサー
- PHP
- INSERTしたテーブルデータの参照
いつもお世話になっています。 早速ですが質問したいことがあります。 環境は、ORACLE11gです。 よろしくお願いします。 PL/SQLにて、テーブルAに対してINSERTを行い、テーブルAにINSERTした データを元にデータを作成し、テーブルBにINSERTをしたいと考えています。 COMMITは、プログラムの処理が全て終わった後に行います。 一応プログラムを作成し、想定どおりの動作を確認できたのですが、一点だけ 気になることがあります。 テーブルAにデータをINSERTしてから、COMMITせずに、テーブルBのデータを 作成するために、テーブルAのデータを取得します。その際、最初に登録した テーブルAのデータは、テーブルBを作成する際、必ず取得できるのでしょうか。 (一応作成したプログラムでは取得できていますが、必ず取得できるものなのか を教えていただきたいです。) COMMITは、仕様上プログラムが全て終わった後にしか行えません。 質問は以上です。 質問文がごちゃごちゃして見難くてすみませんが、ご回答よろしくお願いします。
- ベストアンサー
- Oracle
- らくちんプリント3.0で印刷できない、解像度が悪いという問題について詳細を説明します。
- 自作した画像ファイルやスキャンした画像を印刷する際に、らくちんプリント3.0では解像度が悪くなります。
- 他のソフトウェアでは問題なく印刷できるのに、らくちんプリント3.0では解像度の悪さが原因で印刷結果が悪くなります。
お礼
すいません、お礼が遅くなりました。 回答ありがとうございます。 結構専門的な話だと思っていたので こんなに早く回答がもらえるとは思って いませんでした。 早速4日(金)の夜からTRUNCATEを開始し 今朝はCOSTが低くなっていることを確認できました。 感謝感謝。