jQuery DataTables: таблица width управления

Нет, вы не хотите делать это, особенно если вы планируете отправить 8 миллионов идентификаторов. Обход оператора IN или ограничения параметра связывания неэффективен. Рассмотрим следующее:

  1. Тысячи параметров связывания приведут к мегабайту SQL. Отправка текста SQL в базу данных займет значительное время. Фактически, для чтения текста SQL может потребоваться больше времени, чем для выполнения запроса согласно ответу Тома на вопрос «Ограничение и преобразование очень длинный IN: ГДЕ x IN (,,, ...)» .

  2. Синтаксический анализ SQL будет неэффективным. Не только мегабайты текста SQL требуют времени для чтения, но и с увеличением числа параметров привязки каждый запрос обычно будет иметь различное количество используемых связанных параметров. Это отдельное количество связанных параметров приведет к тому, что каждый запрос будет проанализирован и спланирован отдельно (см. в этой статье, где это объясняется ).

  3. В операторе SQL существует жесткое ограничение связанных параметров. Вы только что обнаружили это, 32760.

Для таких типов запросов обычно лучше создать временные таблицы . Создайте новую временную таблицу перед вашим запросом, вставьте в нее все идентификаторы и объедините ее с таблицей сущностей. Это объединение будет эквивалентно условию IN, за исключением того, что текст SQL будет коротким.

Важно понять, откуда эти 8 миллионов идентификаторов загружены. Если вы извлекаете их из базы данных в предыдущем запросе, просто чтобы передать их следующему запросу, вам, скорее всего, потребуется написать хранимую процедуру. Возможно, в вашем текущем подходе есть недостаток, JPA не всегда является подходящим инструментом для работы.

95
задан mg1075 21 September 2013 в 20:21
поделиться

5 ответов

Вы делаете это в готовом событии?

$(document).ready(function() { ... });

калибровка, скорее всего, будет зависящей от полностью загружаемого документа.

2
ответ дан Awais Qarni 24 November 2019 в 05:44
поделиться

Ну, я не знаком с тем плагином, но Вы могли сбросить стиль после добавления таблицы данных? Что-то как

$("#querydatatablesets").css("width","100%")

после вызова .dataTable?

47
ответ дан SingleNegationElimination 24 November 2019 в 05:44
поделиться

Вы захотите настроить две переменные при инициализации таблиц данных: 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 прежде, чем попробовать это, чтобы видеть, как близко Вы добираетесь.

53
ответ дан artlung 24 November 2019 в 05:44
поделиться
jQuery('#querytableDatasets').dataTable({  
        "bAutoWidth": false
});
49
ответ дан 24 November 2019 в 05:44
поделиться

Просто хочу сказать, что у меня была точно такая же проблема, как и у вас, хотя я просто применил JQuery к обычной таблице без какого-либо Ajax. По какой-то причине Firefox не раскрывает таблицу после ее раскрытия. Я решил проблему, поместив таблицу в DIV и применив эффекты к DIV.

2
ответ дан 24 November 2019 в 05:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: