MSSQL に 1 つのテーブルがあります。
int Id
int Col
int Row
いくつかのオブジェクトを含むタイルマップがあります。各オブジェクトの位置は左上のタイル(行と列の番号) です。オブジェクトはいくつかのタイルを占有できます。
たとえば、サイズが3х3のオブジェクトがあります。このタイルの位置は行 5と列10です。
IEnumerable<int> checkRows = Enumerable.Range(5, 3); // 5, 6, 7
IEnumerable<int> checkCol = Enumerable.Range(10, 3); // 10, 11, 12
DB に新しいオブジェクトを追加する前に、この領域の既存のオブジェクトを確認する必要があります。
5:10 | 5:11 | 5:12
6:10 | 6:11 | 6:12
7:10 | 7:11 | 7:12
オブジェクトが 7:12 の位置にある場合、DB を検索する前にクエリを実行しすぎます。
私が使用した1つのタイルの場合:
db.TileSet.Any(x => x.Col == col & x.Row == row)
この場合、Linq で CPU の高負荷を回避するための最良の解決策またはプラクティスは何ですか?