Предложение ON CONFLICT REPLACE
заставит SQLite удалить существующие строки, а затем вставить новые строки. Это означает, что SQLite, вероятно, собирается потратить некоторое время
Это мое мнение, основанное на документации SQLite и прочтении о других системах управления базами данных. Я не смотрел на исходный код.
SQLite имеет два способа выражения ограничений уникальности: PRIMARY KEY
и UNIQUE
. Они оба создают индекс, хотя.
Здорово, что вы сделали тесты. Большинство разработчиков не делают этого. Но я думаю, что ваши результаты теста вводят в заблуждение.
В вашем случае не имеет значения, как быстро вы можете вставить строки в таблицу, у которой нет первичного ключа. Таблица, не имеющая первичного ключа, не удовлетворяет вашим основным требованиям к целостности данных. Это означает, что вы не можете полагаться на свою базу данных, чтобы дать вам правильные ответы.
Если он не должен давать правильных ответов, я могу сделать это действительно, очень быстро.
Чтобы получить значимое время для вставки в таблицу без ключа, вам нужно либо
И, конечно же, время, которое занимают эти процессы, также должно учитываться.
Кстати, я выполнил тест, запустив в вашу схему операторы вставки SQL по 100 тыс. Транзакций по 1000 операторов, и это заняло всего 30 секунд. Одна транзакция из 1000 операторов вставки, которая, по-видимому, соответствует ожидаемой при производстве, заняла 149 мсек.
Может быть, вы можете ускорить процесс, вставив во временную таблицу без ключа, а затем обновив таблицу с ключами.
Вы можете избежать кавычек в строке, используя \
String s = "this is my \"data\" in the string";
Вам нужно избегать двойных кавычек ..
string blah = "<title type=\"html\">";
OR
string blah = @"<title type=""html"">";
В качестве альтернативы вы можете использовать одинарные кавычки в своем теге, которые будут служить той же цели.
string blah = "<title type='html'>";
Escape :
var str = "<font color=\"red\">;";
(Edit: забыл вставить правильные html-символы!)
Или в javascript вы можете использовать одинарные кавычки, чтобы содержать один с двойными:
var str = '<font color="red">';
Вы также можете написать это так:
string f = @"<font color=""red"">";
Проверьте msdn на строковых литералах .
Если вы создаете большую строку с большим количеством XML, можно было бы написать
var str = @"<tag attribute=`value`><SubTag OtherAttribute=`OtherValue` /></tag>".Replace('`', '"');
. Помните, что это будет менее эффективно во время выполнения из-за вызова Replace (
Наилучший способ справиться с этим - это поместить разметку в отдельный текстовый файл и встроить ее в файл ResX. Это позволит вам написать Properties.Resources.Markup
.