Temp table
От: Ночной Смотрящий Россия  
Дата: 21.05.21 19:38
Оценка:
С удивлением обнаружил, что на самом деле создается обычная, не временная таблица. А у постгри это довольно небыстро.
Вопрос — а как тогда передать табличные данные, при условии что нужно поддержать постгри, мсскл и, потенциально, оракль?
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re: Temp table
От: IT Россия linq2db.com
Дата: 21.05.21 19:57
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>С удивлением обнаружил, что на самом деле создается обычная, не временная таблица. А у постгри это довольно небыстро.

НС>Вопрос — а как тогда передать табличные данные, при условии что нужно поддержать постгри, мсскл и, потенциально, оракль?

Хотя бы код привёл.
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: Temp table
От: Ночной Смотрящий Россия  
Дата: 21.05.21 21:17
Оценка:
Здравствуйте, IT, Вы писали:

НС>>С удивлением обнаружил, что на самом деле создается обычная, не временная таблица. А у постгри это довольно небыстро.

НС>>Вопрос — а как тогда передать табличные данные, при условии что нужно поддержать постгри, мсскл и, потенциально, оракль?
IT>Хотя бы код привёл.

Да чего там приводить? Вызывается CreateTempTable, на нем профайлер показывает конкретную такую задержку.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[3]: Temp table
От: IT Россия linq2db.com
Дата: 22.05.21 02:14
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Да чего там приводить? Вызывается CreateTempTable, на нем профайлер показывает конкретную такую задержку.


Какие параметры? Какой SQL генерируется?
Если нам не помогут, то мы тоже никого не пощадим.
Re: Temp table
От: Mace Windu  
Дата: 22.05.21 08:15
Оценка: 8 (1)
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>С удивлением обнаружил, что на самом деле создается обычная, не временная таблица. А у постгри это довольно небыстро.

НС>Вопрос — а как тогда передать табличные данные, при условии что нужно поддержать постгри, мсскл и, потенциально, оракль?

Временные таблицы добавлены в 3.2.0 https://github.com/linq2db/linq2db/wiki/Releases-and-Roadmap#table-options-and-temporary-tables
Чтобы создать временную, надо указывать это явно через TableOptions параметр, иначе создаст обычную для обратной совместимости с существующим кодом.
Re[4]: Temp table
От: Ночной Смотрящий Россия  
Дата: 22.05.21 14:11
Оценка:
Здравствуйте, IT, Вы писали:

НС>>Да чего там приводить? Вызывается CreateTempTable, на нем профайлер показывает конкретную такую задержку.

IT>Какие параметры?

using var tempEventTable = db.CreateTempTable<TempEventData>(tempEventTableName);

...

internal sealed class TempEventData
{
    public Guid Id { get; set; }

    public Guid? TaskId { get; set; }

    public string PrincipalId { get; set; } = null!;

    public Guid TransactionId { get; set; }

    public DateTimeOffset Date { get; set; }

    public ProcessingStatus? Status { get; set; }

    public string? CurrentStep { get; set; }

    public string? NextStep { get; set; }

    public string? Error { get; set; }

    public string EventCode { get; set; } = null!;
}


IT>Какой SQL генерируется?


CREATE TABLE ...
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[5]: Temp table
От: IT Россия linq2db.com
Дата: 22.05.21 23:36
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

Проверил наши тесты. Такой код

var tempTable = db.CreateTempTable<IDTable>("TempTable");


генерирует такой SQL

-- PostgreSQL PostgreSQL.9.5 PostgreSQL

CREATE TEMPORARY TABLE "TempTable"
(
    "ID" Int NOT NULL
)
ON COMMIT PRESERVE ROWS
Если нам не помогут, то мы тоже никого не пощадим.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.