Да. Вы выходите из новых строк с \
:
VARIABLE="\
THIS IS A VERY LONG\
TEXT STRING IN A MAKE VARIABLE"
А-ч, Вы хотите новые строки? Тогда не я не думаю, что существует любой путь в ванили, Делают. Однако можно всегда использовать здесь-документ в части
команды [Это не работает, видит комментарий от MadScientist]
foo:
echo <<EOF
Here is a multiple line text
with embedded newlines.
EOF
Поскольку Oracle не поддерживает IF EXISTS в PL / SQL, предложение CodeByMidnight об использовании EXISTS обычно выполняется с помощью чего-то вроде
SELECT 1
INTO l_local_variable
FROM dual
WHERE EXISTS(
SELECT 1
FROM some_table
WHERE some_column = some_condition );
Oracle знает, что он может остановить обработку предложения WHERE EXISTS, поскольку как только будет найдена одна строка, поэтому потенциально не нужно подсчитывать большое количество строк, соответствующих критериям. Конечно, это не вызывает беспокойства, если вы проверяете, существует ли строка с определенным ключом, чем если вы проверяете условие, включающее неиндексированные столбцы, или проверяете условие, которое может привести к возврату большого количества строк.
(Примечание: я бы хотел опубликовать это как комментарий к сообщению CodeByMidnight, но комментарии не могут содержать форматированный код).
ОБНОВЛЕНИЕ: Учитывая пояснение, сделанное исходным плакатом в своем комментарии, краткое, Окончательный ответ таков: SELECT 1
или SELECT COUNT (1)
не быстрее, чем SELECT COUNT (*)
. Вопреки любым рекомендациям по кодированию, на которые вы смотрите, COUNT (*)
является предпочтительным способом подсчета всех строк. Существовал старый миф о том, что COUNT (1)
быстрее. Как минимум, этого не было ни в одной из версий Oracle, выпущенных за последнее десятилетие, и маловероятно, что это когда-либо было правдой. Однако это было широко распространенным мнением. Сегодня код, который выполняет COUNT (1)
, а не COUNT (*)
, обычно заставляет меня подозревать, что автор склонен верить различным мифам Oracle, поэтому я бы предложил использовать СЧЕТЧИК (*)
.
COUNT (*)
- предпочтительный способ подсчета всех строк. Существовал старый миф, что COUNT (1)
быстрее. Как минимум, этого не было ни в одной из версий Oracle, выпущенных за последнее десятилетие, и маловероятно, что это когда-либо было правдой. Однако это было широко распространенным мнением. Сегодня код, который выполняет COUNT (1)
, а не COUNT (*)
, обычно заставляет меня подозревать, что автор склонен верить различным мифам об Oracle, поэтому я предлагаю использовать СЧЕТЧИК (*)
. COUNT (*)
- предпочтительный способ подсчета всех строк. Существовал старый миф, что COUNT (1)
быстрее. Как минимум, этого не было ни в одной из версий Oracle, выпущенных за последнее десятилетие, и маловероятно, что это когда-либо было правдой. Однако это было широко распространенным мнением. Сегодня код, который выполняет COUNT (1)
, а не COUNT (*)
, обычно заставляет меня подозревать, что автор склонен верить различным мифам об Oracle, поэтому я предлагаю использовать СЧЕТЧИК (*)
. Однако. Сегодня код, который выполняет COUNT (1)
, а не COUNT (*)
, обычно заставляет меня подозревать, что автор склонен верить различным мифам об Oracle, поэтому я предлагаю использовать СЧЕТЧИК (*)
. Однако. Сегодня код, который выполняет COUNT (1)
, а не COUNT (*)
, обычно заставляет меня подозревать, что автор склонен верить различным мифам Oracle, поэтому я бы предложил использовать СЧЕТЧИК (*)
. Еще лучше использовать EXISTS, если СУБД поддерживает его, или эквивалент, так как это остановит обработку строк, как только будет найдено совпадение.
Я был бы удивлен, если бы select count (*) не был оптимизирован должным образом, нет необходимости загружать все столбцы, так как столбцы не связаны обработка.
Поскольку звезда принимает все столбцы в счетчик, "1" является собственным типом данных.
В MySQL "SELECT COUNT (name_of_the_primary_key)" должен быть таким же быстрым, как ваш SELECT 1. Это индекс, который имеет значение. Функция count () по индексу должна выполняться довольно быстро;)
http://www.dbasupport.com/forums/archive/index.php/t-28741.html
По крайней мере, для Oracle.
Я не думаю, что это верно для Oracle. http://justoracle.blogspot.com/2006/12/count-vs-count1.html
Но в некоторых базах данных причина в том, что '*' должен посещать метаданные таблиц. Это имеет тенденцию добавлять ненужные накладные расходы. Где 1 - это просто литерал.
При прочих равных, "select 1 from my_table"
вернет первый результат быстрее, чем "select count (*) from my_table "
, но если вы извлечете все результаты из запроса, count (*)
будет быстрее, потому что он включает гораздо меньше данных (1 целое число, а не 1 целое число для каждого строку в таблице).