dblinq で使用するデータベースをセットアップしました。
CREATE TABLE 'quotes' (
'DBDate' int(8) unsigned NOT NULL,
'TickerID' int(11) unsigned NOT NULL,
'Open' double(12,4) NOT NULL,
'High' double(12,4) DEFAULT NULL,
'Low' double(12,4) DEFAULT NULL,
'Close' double(12,4) DEFAULT NULL,
'AdjClose' double(12,4) DEFAULT NULL,
'Volume' int(11) unsigned NOT NULL,
PRIMARY KEY ('TickerID','DBDate'),
CONSTRAINT 'quotes_ibfk_1' FOREIGN KEY ('TickerID') REFERENCES 'tickers' ('TickerID') ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC
上記は mysql テーブルのスケジュールです。MySQL サーバーは別のマシンにあります。テストマシンでこのmysqlクエリを実行すると(サーバーと同じマシンではありません)
SELECT a.*, b.* FROM は a を引用します INNER JOIN は b を引用します ON a.DBDate = b.DBDate AND a.TickerID=956 and b.TickerID=957 a.dbdate asc による順序。
期待どおりの出力が得られます: 2934 行セット (0.03 秒)
しかし、次のように DBLinq を使用して C# 環境で同じ結果を得たい場合:
var tradeAbleA = (from a in _db.Quotes where a.TickerID == 956 select a);
var tradeAbleB = (from a in _db.Quotes where a.TickerID == 957 select a);
var myDataSet = (from a in tradeAbleA.AsEnumerable() join b in tradeAbleB.AsEnumerable() on a.DbdAte equals b.DbdAte orderby a.DbdAte ascending select new { a, b }).ToList();
リストがいっぱいになるまでに 1 秒以上かかります。これは長すぎます。どうすればこれをスピードアップできますか? (リストに必要です)よろしく、
マティス