Нет, вы не хотите делать это, особенно если вы планируете отправить 8 миллионов идентификаторов. Обход оператора IN
или ограничения параметра связывания неэффективен. Рассмотрим следующее:
Тысячи параметров связывания приведут к мегабайту SQL. Отправка текста SQL в базу данных займет значительное время. Фактически, для чтения текста SQL может потребоваться больше времени, чем для выполнения запроса согласно ответу Тома на вопрос «Ограничение и преобразование очень длинный IN: ГДЕ x IN (,,, ...)» .
Синтаксический анализ SQL будет неэффективным. Не только мегабайты текста SQL требуют времени для чтения, но и с увеличением числа параметров привязки каждый запрос обычно будет иметь различное количество используемых связанных параметров. Это отдельное количество связанных параметров приведет к тому, что каждый запрос будет проанализирован и спланирован отдельно (см. в этой статье, где это объясняется ).
В операторе SQL существует жесткое ограничение связанных параметров. Вы только что обнаружили это, 32760.
Для таких типов запросов обычно лучше создать временные таблицы . Создайте новую временную таблицу перед вашим запросом, вставьте в нее все идентификаторы и объедините ее с таблицей сущностей. Это объединение будет эквивалентно условию IN
, за исключением того, что текст SQL будет коротким.
Важно понять, откуда эти 8 миллионов идентификаторов загружены. Если вы извлекаете их из базы данных в предыдущем запросе, просто чтобы передать их следующему запросу, вам, скорее всего, потребуется написать хранимую процедуру. Возможно, в вашем текущем подходе есть недостаток, JPA не всегда является подходящим инструментом для работы.
Вы делаете это в готовом событии?
$(document).ready(function() { ... });
калибровка, скорее всего, будет зависящей от полностью загружаемого документа.
Ну, я не знаком с тем плагином, но Вы могли сбросить стиль после добавления таблицы данных? Что-то как
$("#querydatatablesets").css("width","100%")
после вызова .dataTable?
Вы захотите настроить две переменные при инициализации таблиц данных: bAutoWidth
и aoColumns.sWidth
Принятие у Вас есть 4 столбца с ширинами 50 пкс, 100, 120 пкс и 30 пкс, которых Вы сделали бы:
jQuery('#querytableDatasets').dataTable({
"bPaginate": false,
"bInfo": false,
"bFilter": false,
"bAutoWidth": false,
"aoColumns" : [
{ sWidth: '50px' },
{ sWidth: '100px' },
{ sWidth: '120px' },
{ sWidth: '30px' }
]
});
[еще 116] информация об инициализации таблиц данных может быть найдена в http://datatables.net/usage
Часы для взаимодействия между этой установкой ширин и CSS, который Вы применяете. Вы могли бы прокомментировать свой существующий CSS прежде, чем попробовать это, чтобы видеть, как близко Вы добираетесь.
jQuery('#querytableDatasets').dataTable({
"bAutoWidth": false
});
Просто хочу сказать, что у меня была точно такая же проблема, как и у вас, хотя я просто применил JQuery к обычной таблице без какого-либо Ajax. По какой-то причине Firefox не раскрывает таблицу после ее раскрытия. Я решил проблему, поместив таблицу в DIV и применив эффекты к DIV.