私のデータベースはMySQLなので、それについてしか話せませんが、そのようなタイプのクエリでもパフォーマンスは良好です(あなたのケースで遅いクエリが何であるかによって異なります。私のコードは160000レコードのテーブルをクエリし、SELECT * FROM table WHERE id IN(1,2,3,...159999)
それ以下で使用することさえできます) 3 秒)。この場合のボトルネックは、大規模なクエリをネットワーク経由で転送することですが、ローカル LAN では大したことではありません。
別のテーブルからシート ID を照会できる場合は、サーバー側の実行 (サブクエリ) でパフォーマンスを向上させることもできます。
SubSonic.SqlQuery subQuery = DB
.Select(Seats.Columns.Id)
.From<Seats>()
.Where(Seat.Columns.Type).IsEqualTo(1);
// translates to
// UPDATE tickets SET price = 123
// WHERE seatid IN (SELECT id FROM seats WHERE type = 1)
DB.Update<Tickets>()
.Set(Tickets.Columns.Price).EqualTo(123)
.Where(Tickets.Columns.SeatId).In(subQuery)
.Execute();
// translates to
// UPDATE tickets SET price = 123
// WHERE seatid IN (1,3,5,7,...,2000)
DB.Update<Tickets>()
.Set(Tickets.Columns.Price).EqualTo(123)
.Where(Tickets.Columns.SeatId).In(subQuery.ToList<int>())
.Execute();