Добрый день, недавно писал приложение, анализируещее сборку на предмет аттрибутов.
Встала задача эти аттрибуты сохранять в базу.
Вопрос в том как проверять есть ли в базе аттрибуты.
Я как понимаю операция IN имеет некоторые ограничения, особенно если сравнивать по несколько параметров.
Пример:
Аттрибут вида [SourceAnnotation("Sam Fisher","08-05-2015")]
Сравнивается в базе 2 параметра т.к. , аттрибутов могут быть сотни, некоторые уже в базе.
Так вот, применимо ли для таких операций оператор IN ?
Ничего толком не понятно. Что вы хотите сохранить в базе об атрибуте? На какой сущности от висит? Его тип? Параметры? Что собираетесь искать? Зачем вам IN сейчас, как вы им польузетесь?
Станислав Макаров: Ид, имя, дата.
WHERE a.Name IN (...) AND a.Date IN (...)
скорее всего.
Сделал по хешу, но задал вопрос с тем что делать в таких случаях, когда по IN сравниваются много параметров(к примеру 1000 аттрибутов), строка IN растянется до ужаса.
На MSDN предлагают для этого делать временную таблицу
Типа:
Артур Нуруллин:
"Sam Fisher" - 10 byte
"08-05-2015" - 10 byte
100.000*20 = 2 мегабайта. Ну плюс какие-то затраты на указатели. Может строчки будут подлинее и из русских букв и в utf. Ну 20 мегабайтов. Много?