Запись строки, которая содержит “”

Предложение ON CONFLICT REPLACE заставит SQLite удалить существующие строки, а затем вставить новые строки. Это означает, что SQLite, вероятно, собирается потратить некоторое время

  • , удаляя существующие строки
  • , обновляя индексы
  • , вставляя новые строки
  • обновляя индексы

Это мое мнение, основанное на документации SQLite и прочтении о других системах управления базами данных. Я не смотрел на исходный код.

SQLite имеет два способа выражения ограничений уникальности: PRIMARY KEY и UNIQUE. Они оба создают индекс, хотя.

1114 Теперь действительно важные вещи. , .

Здорово, что вы сделали тесты. Большинство разработчиков не делают этого. Но я думаю, что ваши результаты теста вводят в заблуждение.

В вашем случае не имеет значения, как быстро вы можете вставить строки в таблицу, у которой нет первичного ключа. Таблица, не имеющая первичного ключа, не удовлетворяет вашим основным требованиям к целостности данных. Это означает, что вы не можете полагаться на свою базу данных, чтобы дать вам правильные ответы.

Если он не должен давать правильных ответов, я могу сделать это действительно, очень быстро.

Чтобы получить значимое время для вставки в таблицу без ключа, вам нужно либо

  • запустить код , прежде чем вставить новые данные, чтобы убедиться, что вы этого не сделаете. нарушите необъявленное ограничение первичного ключа и убедитесь, что вы обновляете существующие строки правильными значениями (вместо вставки), или
  • запускаете код после вставки в эту таблицу для очистки дубликатов на (Fld0, Fld2, Fld3) и для урегулирования конфликтов

И, конечно же, время, которое занимают эти процессы, также должно учитываться.

Кстати, я выполнил тест, запустив в вашу схему операторы вставки SQL по 100 тыс. Транзакций по 1000 операторов, и это заняло всего 30 секунд. Одна транзакция из 1000 операторов вставки, которая, по-видимому, соответствует ожидаемой при производстве, заняла 149 мсек.

Может быть, вы можете ускорить процесс, вставив во временную таблицу без ключа, а затем обновив таблицу с ключами.

5
задан RichieHindle 10 June 2009 в 11:14
поделиться

6 ответов

Вы можете избежать кавычек в строке, используя \

String s = "this is my \"data\" in the string";
21
ответ дан 18 December 2019 в 05:13
поделиться

Вам нужно избегать двойных кавычек ..

string blah = "<title type=\"html\">";

OR

string blah = @"<title type=""html"">";

В качестве альтернативы вы можете использовать одинарные кавычки в своем теге, которые будут служить той же цели.

string blah = "<title type='html'>"; 
27
ответ дан 18 December 2019 в 05:13
поделиться

Escape :

var str = "<font color=\"red\">;";

(Edit: забыл вставить правильные html-символы!)

Или в javascript вы можете использовать одинарные кавычки, чтобы содержать один с двойными:

var str = '<font color="red">';
3
ответ дан 18 December 2019 в 05:13
поделиться

Вы также можете написать это так:

string f = @"<font color=""red"">";

Проверьте msdn на строковых литералах .

2
ответ дан 18 December 2019 в 05:13
поделиться

Если вы создаете большую строку с большим количеством XML, можно было бы написать

var str = @"<tag attribute=`value`><SubTag OtherAttribute=`OtherValue` /></tag>".Replace('`', '"');

. Помните, что это будет менее эффективно во время выполнения из-за вызова Replace (

Наилучший способ справиться с этим - это поместить разметку в отдельный текстовый файл и встроить ее в файл ResX. Это позволит вам написать Properties.Resources.Markup .

1
ответ дан 18 December 2019 в 05:13
поделиться

string jason = "

1
ответ дан 18 December 2019 в 05:13
поделиться
Другие вопросы по тегам:

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