Кэширование функциональных результатов в SQL Server 2000

Возможно, ваш MediaPlayer все еще находится в состоянии Idle после того, как вы позвоните mp.start() в течение нескольких миллисекунд. В Andoid Documentation говорится, что если setVolume вызывается из состояния Idle, ошибки не будут выдаваться, однако никаких изменений в состоянии MediaPlayer не будет.

Если это проблема, возможное исправление будет ждать, пока mp.isPlaying() не вернет true, прежде чем вводить свой оператор switch. Возможно, что аудио драйвер Samsung имеет небольшую задержку, и это является причиной этой проблемы.

Цитата из документации Android:

Существует небольшая, но важная разница между вновь созданным объектом MediaPlayer и объектом MediaPlayer после вызова метода reset (). Это программная ошибка для вызова таких методов, как setVolume (float, float) ... в состоянии ожидания для обоих случаев.

Если любой из этих методов вызывается сразу после создания объекта MediaPlayer, предоставленный пользователем метод обратного вызова OnErrorListener.onError () не будет вызываться внутренним механизмом проигрывателя, и состояние объекта остается неизменным; но если эти методы вызываются сразу после reset (), предоставленный пользователем метод обратного вызова OnErrorListener.onError () будет вызван внутренним механизмом проигрывателя, и объект будет переведен в состояние Error.

blockquote>

6
задан jennykwan 12 March 2009 в 14:38
поделиться

1 ответ

Детерминированный означает, что те же исходные данные возвращают тот же вывод, независимый от времени и базы данных.

SQL Server (любая версия) не делает никакого кэширования UDFs - я полагаю, что это постарается не называть UDF дважды на одной строке, но вот именно.

Один прием, который я использовал, к (я думаю, что отправил его здесь на ТАК):

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

Назовите UDF по ОТЛИЧНОМУ набору строк и кэшируйте результаты к временной таблице. Если Вы только называете UDF с 100 000 кортежей параметров по 17 000 000 наборов строк, это намного более эффективно.

СОЕДИНИТЕ с временной таблицей (в основном преобразовывающий от основанной на коде логики до основанной на таблице логики) для получения значений.

Эта таблица может быть снова использована по мере необходимости или даже сохранена.

Дополнение к таблице может быть сделано первым ЛЕВЫМ ПРИСОЕДИНЕНИЕМ, чтобы найти, что пропавшие без вести кэшировали записи.

Это работает и на одну строку табличный UDFs и на скалярный UDFs. Я главным образом использую его для табличного UDFs. Существуют текущие исправления к SQL Server 2005, который, как предполагается, обращается к производительности UDF - я ожидаю на mthe DBAs для тестирования его прежде, чем развернуться к производству.

2
ответ дан 17 December 2019 в 20:35
поделиться
Другие вопросы по тегам:

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