Функция MySQL FIND_IN_SET печально известна тем, что не использует индексы, что приводит к неэффективным запросам. Однако существуют альтернативные подходы для достижения желаемого поведения индексации при работе со списками, разделенными запятыми.
Техника, описанная в предоставленном ответе, предполагает использование подготовленного оператора с параметром. принятие строки в виде списка, разделенного запятыми. Использование типа диапазона с ключом, отличным от NULL, в подготовленном операторе гарантирует, что индексы будут использоваться при выполнении предложения IN.
Например, следующий запрос выполняет поиск диапазона с индексом в Столбец 'id':
explain select * from ratings where id in (2331425, 430364, 4557546, 2696638, 4510549, ...)
Хотя этот подход позволяет эффективно индексировать запросы, крайне важно соблюдайте следующие меры предосторожности:
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3