У меня есть хранимая процедура, аналогичная приведенной ниже.
SELECT *
FROM Table1
WHERE Tag IN (ids)
здесь Tag
— столбец Integer
.
Я устал передавать значения, разделенные запятыми, в виде строки в хранимую процедуру, но это не работает. Затем я использовал хранимую процедуру, как показано ниже.
SELECT *
FROM Table1
WHERE FIND_IN_SET(Tag, ids)
Это работает очень хорошо, единственная проблема в том, что моя таблица очень большая - миллионы строк, и использование FIND_IN_SET занимает слишком много времени по сравнению с IN при выполнении прямого оператора SQL.
Какой вариант оптимизации производительности лучше всего использовать?
Есть ли функция разделения, которая может преобразовать идентификаторы в целое число и проанализировать его, готовое к предложению IN? Думаю, это будет лучший вариант. Любые предложения или идеи?