以下のようなSQLを発行すると、mysqlの処理時間が非常に多くかかるため、なんとか最適化を行いたいと考えています。
どのような方法があるのか教えていただけませんしょうか。
SELECT user_id,comment,comment_id,date,study_time,study,source
FROM data_temp t1
WHERE NOT EXISTS
(select comment_id from data t2 where t1.comment_id = t2.comment_id)
■補足
・dataとdata_tempのテーブル構造は全く同じです。
・SQLで実現したいことは、両テーブルのcomment_idをキーとして、dataに含まれないdata_tempの差分データを表示させたい。
なお、以下のインデックス作成は行いましたが、結果変わらずでした。
alter table data t1 ADD INDEX_t1 (user_id,comment,comment_id,date,study_time,study,source);
alter table data_temp t1 ADD INDEX_t1 (user_id,comment,comment_id,date,study_time,study,source);
よろしくお願いします。
SqlMap.xmlにて
</select>
<select id="getDept" resultClass="blog.Dept">
SELECT * FROM blog
</select>
Deptにて;
public class Dept {
private int id[];
public int[] getId() {
return id;
}
public void setId(int[] id) {
this.id = id;
}
blogArticle.javaにて
public void load()throws Exception
{
SqlMapClient sqlMap = MyAppSqlConfig.getSqlMapInstance();
sqlMap.startTransaction();
Dept dept =
(Dept)sqlMap.queryForObject("getDept");
sqlMap.commitTransaction();
}
以下のエラーが出てしまいました
No type handler could be found to map the property 'id' to the column 'id'. One or both of the types, or the combination of types is not supported.
.
deptのところを
private int id[];
public int[] getId() {
return id;
}
public void setId(int[] id) {
this.id = id;
から
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
に変えるとエラーは無くなりますが・・・
しかしながら配列型のBeanでは受入はできないということでしょうか。うまい方法はないでしょうか。
ご教授の程よろしくお願い申し上げます。
LennyのOSにapache2(2.6.26.2-686)をインストールしたのですが、/etc/apache2/apache2.configの内容がetchの場合と少し違うようです。
EtchのOSの場合は
1. ServerTokens Full → ProductOnly
2. ServerSignature On → Off
3. LanguagePriority en ca cs da ・・・ → ja en ・・・・zh-TW または jaとen のみ
4 #AddHandler cgi-script .cgi → #アンコメントしてAddHandler cgi-script .cgi .pl
http://ameblo.jp/my-ameba/entry-10032177876.html
のようですが、2.6.26.2-686には上記の記述がありません。
エラードキュメントで必要になるmod_alias, mod_include and mod_negotiationを始動させるときに30行をuncomentしろとの1行に
LanguagePriority en cs de es fr it nl sv pt-br ro
とあるが、Webサイトそのもの言語と言うわけでないような気がします。
上記の変更を、手打ちで適当な場所に打てば、解決するのか、それとも他のファイルで調整をするのか、わかる方ご教授をお願いします。
LennyのOSにapache2(2.6.26.2-686)をインストールしたのですが、/etc/apache2/apache2.configの内容がetchの場合と少し違うようです。
EtchのOSの場合は
1. ServerTokens Full → ProductOnly
2. ServerSignature On → Off
3. LanguagePriority en ca cs da ・・・ → ja en ・・・・zh-TW または jaとen のみ
4 #AddHandler cgi-script .cgi → #アンコメントしてAddHandler cgi-script .cgi .pl
http://ameblo.jp/my-ameba/entry-10032177876.html
のようですが、2.6.26.2-686には上記の記述がありません。
エラードキュメントで必要になるmod_alias, mod_include and mod_negotiationを始動させるときに30行をuncomentしろとの1行に
LanguagePriority en cs de es fr it nl sv pt-br ro
とあるが、Webサイトそのもの言語と言うわけでないような気がします。
上記の変更を、手打ちで適当な場所に打てば、解決するのか、それとも他のファイルで調整をするのか、わかる方ご教授をお願いします。
書籍にLinux(RedHat8.0)、PostgreSQLのユーザ名とデータベース名とを同一にするように記載されていました。このため、"database_6"というもの作成しました。ところが、テーブル作成、テーブル確認には、データベース接続後、所定のコマンドを実行することで問題はありませんでしたが、インポート時には、
ERROR: could not open file "/home/database_6/database_euc_4.csv" for reading: 許可がありませえん
とエラーメッセージが表示されます。そこで、アクセス権限を調べると、
-r-xr-xr-x 1 database_6 database_6 113166 6月 5 19:37 database_euc_4.csv
これは、Linuxの"database_6"であって、PostgreSQLの"database_6"ではないと考えられます。どのようにすれば、アクセス権限を変更できるでしょうか?ここでは、同一名称にしたことが、仇になっているようです。こうならないようにするために、同一名称にするのかと思っていましたが…。
ちなみに、database_6のOwnerは"postgres"になっています。"postgres"にアクセス権限を与えるのも1つの方法かと思いますが、インポートを実行しようとすると、
-bash: COPY: command not found
とエラーメッセージが表示され、パスが通っていないようです。これは、~/.bash_profileが上手く読み込まれていないということでしょうか?