08/06/13 23:56:30
>>95
C++は読めないんですが、読めないなりにO2DatDB.cppを眺めてみた感じでは
以下の2文が遅いように思えます。
・where句なしのorder by random()
・select sum(disksize) from dat;
前者はたぶん全件ソートがかかると思われます。
(limitがかかっているとしても、それ以前に全件ソートがかかると思われます。)
というか、そもそもDBMSはランダム処理が得意ではないので
どっちにしろプログラム側で処理すべきです。
後者に関しては、このSQLを発行するならdisksizeにindexがあるべきです。
ただ、そんなに頻繁に使用するSQLではない(管理画面→状態と、
他ノードからのプロフィール参照でしか使わない?)と思うので
あまり気にしなくても良いかもしれません。
それ以外はSQL単品で遅いものはないように見えるので、
呼び出す回数を減らすことを考えたほうが良いと思います。
ちなみに、テーブル構造をいじる必要は感じません。
正規化の観点では若干違反していますが
パフォーマンス上は現状のほうが有利と思います。