Тема: MSSQL и Oracle
Показать сообщение отдельно
Старый 30.11.2009, 12:17   #16  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 868 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
чем плохо правое выравнивание
При правом выравнивании запрос вида:
X++:
select sum(AmountCur) from ledgerTrans
where ledgerTrans.AccountNum == '41.100'
на MS SQL-сервер уйдет:
Код:
SELECT SUM(AMOUNTCUR)
FROM LEDGERTRANS
WHERE AccountNum LIKE '%41.100'
Что сильно напряжет сервер, так как не будет использован индекс.
При левом выравнивании запрос получится таким:
Код:
SELECT SUM(AMOUNTCUR)
FROM LEDGERTRANS
WHERE AccountNum = '41.100'
Что на порядок проще для MS SQL


Для Oracle правое выравнивание - не проблема, так как там получится как-то так
Код:
SELECT SUM(AMOUNTCUR)
FROM LEDGERTRANS
WHERE NLS_LOWER(LTRIM(AccountNum)) = NLS_LOWER('41.100')
Причем, индекс на таблице будет как раз по NLS_LOWER(LTRIM(AccountNum))