У меня есть запрос, который выглядит примерно так:Улучшение производительности «обратный» LIKE запрос
SELECT CustomerId
FROM Customer cust
WHERE 'SoseJost75G' LIKE cust.ClientCustomerId + '%' -- ClientCustomerId is SoseJost
тэк, что это делает, я получаю значение от клиента, который мой ClientCustomerId
но с неизвестным количеством дополнительных символов, прикрепленных к концу.
Так в моем примере, клиент дает мне SoseJost75G
, но моя база данных имеет только SoseJost
(без 75G
на конце.)
Мой запрос работает работает. Но это займет минуту, чтобы бежать. Это связано с тем, что он не может использовать индекс, который находится на ClientCustomerId.
Кто-нибудь знает, как улучшить производительность такого типа запросов?
Я не могу многое сделать. Здесь нужно будет отсканировать индекс. Есть ли какой-то способ, которым вы можете заставить их передать вам действительный номер вместо действительного числа с каким-то другим материалом, застрявшим в конце? –
Имеет ли бит на конце какой-либо согласованный шаблон? например, всегда 3 символа или всегда начинается с числа (а идентификатор - нет)? – Bohemian
Можете ли вы вернуть похожие совпадающие записи, и пользователь может выбрать правильный? 'WHERE ClientCustomerId LIKE LEFT ('SoseJost75G', 5) + '%'' – seagulledge