Начиная с определенного числа, таблицы IN
работают быстрее.
В коде MySQL
есть что-то, что позволяет строить диапазон из большого количества постоянные значения медленнее, чем во вложенном цикле.
Подробнее о производительности см. в этой статье в моем блоге:
Как указано в ответе Квассной, один натыкается на другие практические соображения , до того, как достигнет любого возможного ограничения , налагаемого реализацией данной версии MySql (*). Следовательно,
Я не осведомлен о специфике этой базы данных, ее объеме, сложности и т. Д. И, да, я знаю, что некоторая дань производительности должна быть отдана формату EAV (Entity-Attribute-Value), но я думаю, что Даже для успешных предприятий база данных учетных записей редко насчитывает более 10 000 пользователей. Таким образом, даже с очень большим количеством атрибутов для каждого пользователя мы по-прежнему смотрим на относительно небольшую таблицу EAV, которая может не требовать такой оптимизации. (С другой стороны, некоторые другие приемы оптимизации могут быть полезны и в других областях).
Кроме того, типичные варианты использования включают в себя относительно небольшое количество запросов в базу данных учетных записей по сравнению с другими запросами, и поэтому это еще одна причина, чтобы отложить любые нетривиальные соображения производительности для связанных с учетными записями функций приложения.
Предложение: Может быть, использовать " Для атрибутов с однозначными значениями и, в частности, если они короткие, их можно переместить (или продублировать) в таблице сущностей (в данном случае таблица USER). Это вводит некоторую логику во время вставки или обновления элементов, но это то же самое, что и многие соединения (или подзапросы), а также дает возможность рассмотреть многополевые индексы для поддержки наиболее распространенных вариантов использования.
(*) лимит?
Я не читал ни о каком таком ограничении; Я знаю, что у Oracle когда-то был (был) лимит 1000, а у MSSQL - нет; конечно, у всех серверов есть ограничение, основанное на общей длине оператора SQL, но это действительно большое число! если кто-нибудь наткнется на этого, у него / нее будут другие проблемы ... ;-)