Количество MySQL объектов в “в пункте”

63
задан DarkAjax 11 March 2013 в 22:17
поделиться

2 ответа

Начиная с определенного числа, таблицы IN работают быстрее.

В коде MySQL есть что-то, что позволяет строить диапазон из большого количества постоянные значения медленнее, чем во вложенном цикле.

Подробнее о производительности см. в этой статье в моем блоге:

34
ответ дан 24 November 2019 в 16:05
поделиться

Как указано в ответе Квассной, один натыкается на другие практические соображения , до того, как достигнет любого возможного ограничения , налагаемого реализацией данной версии MySql (*). Следовательно, Я не осведомлен о специфике этой базы данных, ее объеме, сложности и т. Д. И, да, я знаю, что некоторая дань производительности должна быть отдана формату EAV (Entity-Attribute-Value), но я думаю, что Даже для успешных предприятий база данных учетных записей редко насчитывает более 10 000 пользователей. Таким образом, даже с очень большим количеством атрибутов для каждого пользователя мы по-прежнему смотрим на относительно небольшую таблицу EAV, которая может не требовать такой оптимизации. (С другой стороны, некоторые другие приемы оптимизации могут быть полезны и в других областях).
Кроме того, типичные варианты использования включают в себя относительно небольшое количество запросов в базу данных учетных записей по сравнению с другими запросами, и поэтому это еще одна причина, чтобы отложить любые нетривиальные соображения производительности для связанных с учетными записями функций приложения.

Предложение: Может быть, использовать " Для атрибутов с однозначными значениями и, в частности, если они короткие, их можно переместить (или продублировать) в таблице сущностей (в данном случае таблица USER). Это вводит некоторую логику во время вставки или обновления элементов, но это то же самое, что и многие соединения (или подзапросы), а также дает возможность рассмотреть многополевые индексы для поддержки наиболее распространенных вариантов использования.

(*) лимит?
Я не читал ни о каком таком ограничении; Я знаю, что у Oracle когда-то был (был) лимит 1000, а у MSSQL - нет; конечно, у всех серверов есть ограничение, основанное на общей длине оператора SQL, но это действительно большое число! если кто-нибудь наткнется на этого, у него / нее будут другие проблемы ... ;-)

11
ответ дан 24 November 2019 в 16:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: