Informix Logo


Есть таблица, которая имеет в своем составе индексированное CHAR поле description. Почему первый из приведенных ниже запросов использует индекс, а второй - sequential scan?

select * from stock where description="11"
select * from stock where description=11

Так и должно быть, поскольку в этом случае IDS при исполнении запроса конвертирует каждое значение поля description из CHAR в NUMERIC и только тогда сравнивает с 11. Представьте, если бы в поле description были значения "011"," 11" и "11". Что бы Вы ожидали увидеть в результате выполнения запроса, все из них или только последнее? Второй из приведенных запросов вернул бы все, в то время как первый - только "11". Вы не можете использовать индекс, поскольку все значения, которые могут быть сконвертированы в число 11, не могут быть известны заранее и не сгруппированы вместе в индексе.

Алексей Беспалый abespaly@informix.com


Украинская баннерная сеть
 

[Home]

Сайт поддерживается группой пользователей Информикс на Украине.

Hosted by NO-more.