Преобразуйте NSString в неподписанный символ * для приложения для iPhone

Мое понимание буферизации - то, что это - определенный отвлекающий маневр на Вашем плане выполнения. Да, это составляет много Вашей стоимости запроса, но это - на самом деле оптимизация, которую SQL Server предпринимает автоматически так, чтобы это могло избежать дорогостоящего пересканирования. Если необходимо было постараться не буферизовать, стоимость дерева выполнения, на котором она находится, повысится, и почти наверняка стоимость целого запроса увеличилась бы. У меня нет никакого конкретного понимания, что в особенности могло бы заставить оптимизатор запросов базы данных анализировать выполнение тот путь, особенно не видя код SQL, но Вы - вероятно, более обеспеченное доверие его поведению.

Однако, который не означает, Ваш план выполнения не может быть оптимизирован, в зависимости от точно, что Вы готовы и насколько энергозависимый Ваши исходные данные. Когда Вы сделаете SELECT INTO, Вы будете часто видеть объекты буферизации на своем плане выполнения, и он может быть связан для чтения изоляции. Если это подходит для Вашей конкретной ситуации, Вы могли бы попытаться просто понизить уровень изоляции транзакции к чему-то менее дорогостоящему, и/или использовать эти NOLOCK подсказка. Я нашел в сложных критических по отношению к производительности запросах, что NOLOCK, если безопасный и подходящий для Ваших данных, может значительно увеличить скорость выполнения запросов, даже когда, кажется, нет никакой причины, это должно.

В этой ситуации, если Вы пробуете READ UNCOMMITTED или эти NOLOCK подсказка, можно быть в состоянии устранить некоторые Шпульки. (Очевидно, Вы не хотите делать это, если это, вероятно, посадит Вас в непоследовательном состоянии, но общие требования изоляции данных отличаются). TOP оператор и OR оператор может иногда вызывать буферизацию, но я сомневаюсь, что Вы делаете любого из тех в процессе ETL...

Вы правы в высказывании, что Ваш UDFs мог также быть преступником. Если бы Вы только используете каждый UDF однажды, это был бы интересный эксперимент, чтобы попытаться поместить их встроенный, чтобы видеть, получаете ли Вы большой выигрыш в производительности. (И если Вы не можете выяснить способ записать им встроенный с запросом, это, вероятно, почему они могли бы вызывать буферизацию).

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

6
задан bbum 26 November 2009 в 13:52
поделиться

3 ответа

Ссылка на NSString - ваша помощь. NSString имеет следующие функции для преобразования его в c-строку:

- (const char *)UTF8String;
- (const char *)cStringUsingEncoding:(NSStringEncoding)encoding
- (BOOL)getCString:(char *)buffer maxLength:(NSUInteger)maxBufferCount encoding:(NSStringEncoding)encoding

И есть также аналогичный вопрос .

4
ответ дан 8 December 2019 в 05:21
поделиться

Что ж, вопрос звучит неправильно, потому что набор текста - не единственное, о чем вам нужно беспокоиться. Вам нужно не только беспокоиться о доступе, но также нужно беспокоиться о кодировании. Предполагая, что вам просто нужна кодировка UTF8, вы можете обойтись с помощью:

NSString *myString = @"Hello";
const unsigned char *string = (const unsigned char *) [myString UTF8String];

Если, однако, вам нужен доступ к однобайтовым символьным данным, вы, вероятно, захотите одну из других кодировок, например ASCII:

NSString *myString = @"Hello";
const unsigned char *string = (const unsigned char *) [myString cStringUsingEncoding:NSASCIIStringEncoding];

другая ценная кодировка, которую вы, возможно, захотите использовать, - это Latin1, которая дает вам стандартный ASCII вместе с акцентированными символами и символами, используемыми в большинстве языков Западной Европы и США: NSISOLatin1StringEncoding

19
ответ дан 8 December 2019 в 05:21
поделиться

Вы можете попробовать использовать кодировку

 - (const char *) cStringUsingEncoding: (NSStringEncoding)
0
ответ дан 8 December 2019 в 05:21
поделиться
Другие вопросы по тегам:

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