Я использую драгоценный камень «flag_shih_tzu», и я хочу знать, что такое максимальное количество флагов, которое оно может обрабатывать, или оно зависит от int. длина в столбце flags?
Мне нужно, чтобы он обрабатывал 64 флага.
не правда ли?Какое максимальное количество флагов flag_shih_tzu может обрабатывать?
ответ
Я являюсь хранителем flag_shih_tzu.
Наилучшая практика: для каждого столбца, используемого для флагов, должно быть установлено не более 16 флагов по соображениям производительности. Вы обнаружите, что производительность слишком сильно страдает от столбцов, содержащих более 16 флагов.
Обход проблемы: одна таблица может иметь несколько столбцов флагов.
Я хотел бы создать дизайн следующим образом:
class Foo ...
has_flags 1 => :is_a1,
# ... snip ...
16 => :is_a16,
:column => 'flag_col_a'
has_flags 1 => :is_b1,
# ... snip ...
16 => :is_b16,
:column => 'flag_col_b'
has_flags 1 => :is_c1,
# ... snip ...
16 => :is_c16,
:column => 'flag_col_c'
has_flags 1 => :is_d1,
# ... snip ...
16 => :is_d16,
:column => 'flag_col_d'
end
Теперь, когда у вас есть экземпляр Foo:
foo = Foo.new
foo.is_d16 = false
foo.save
Теперь вы можете восстановить Foo так:
Foo.not_is_d16 # => [foo]
И если вы хотите также проверить другие флаги в том же запросе, вы должны объединить условия вместе (в побитовом оптимизированном mann er) следующим образом:
Foo.chained_flags_with(:not_is_d16, :is_d1, :is_d4, :not_is_d11, :is_d14) # => array of Foo objects matching the conditions
Теперь для гигантского оговорки! Если вы хотите использовать четыре столбца вместе, они должны быть в отдельных частях предложения SQL WHERE и, следовательно, в разных активных отношениях записи.
Важная информация Цепные флага могут быть связаны только с флагами из той же колонны.
Foo.
chained_flags_with(:not_is_a1, :is_a2). # from flag_col_a
chained_flags_with(:not_is_b3, :is_b4). # from flag_col_b
chained_flags_with(:not_is_c8, :is_c11). # from flag_col_c
chained_flags_with(:not_is_d13, :is_d14) # from flag_col_d
Лично я никогда не прохожу мимо 8 флагов на столбе и разделяю свои флаги на столько столбцов, сколько мне нужно.
Рекомендация: Объединить флаги для свойств, которые будут запрашиваться вместе в одном столбце, чтобы наилучшим образом использовать побитовую арифметику.
- 1. Какое максимальное количество сокетов может обрабатывать epoll?
- 2. Какое максимальное число может обрабатывать десятичный класс?
- 3. Какое максимальное количество листов может обрабатывать книга Excel?
- 4. Какое максимальное количество сокетов, которые select() может обрабатывать в Windows?
- 5. Какое максимальное количество индексов lucene.net может обрабатывать в документе
- 6. Какое максимальное количество данных может обрабатывать приложение iOS?
- 7. Какое максимальное число PHP может обрабатывать?
- 8. Какое максимальное количество секций может иметь PE?
- 9. Какое максимальное количество осколков может иметь MongoDB?
- 10. Какое максимальное количество соединений?
- 11. Какое максимальное количество HttpSession атрибутов
- 12. Какое максимальное количество столкновений может быть вызвано хэшированием n ключей?
- 13. Какое максимальное количество потоков может иметь процесс в окнах
- 14. Какое максимальное количество элементов может иметь перечисление в C?
- 15. Какое максимальное количество строк может хранить одна таблица SQL Server?
- 16. Какое максимальное количество страниц может генерировать apache fop?
- 17. Какое максимальное количество строк DataGridView может отобразить ОК?
- 18. Какое максимальное количество параметров может иметь процедура PL/SQL?
- 19. Какое максимальное количество байтов может получить WSARecv за один раз?
- 20. Какое максимальное количество арендаторов Azure Active Directory?
- 21. Какое максимальное количество параллельных подключений может обрабатывать сокет без учета вычислительных ресурсов?
- 22. Какое максимальное количество услуг ограничено ОС Android?
- 23. Веб-сервер Максимальное количество пользователей apache может обрабатывать?
- 24. Как найти максимальное количество параллельных соединений, которые может обрабатывать сервер?
- 25. Каково максимальное количество Ibecons, которое может обрабатывать мобильное устройство/планшет?
- 26. Имеет ли «grep» максимальное количество файлов, которые он может обрабатывать?
- 27. Каково максимальное количество тем, которое может обрабатывать брокер ActiveMQ?
- 28. Какое максимальное количество потоков доступно в SpecRun
- 29. Какое максимальное количество текстур за кадр
- 30. Какое максимальное количество пользователей iTunes Connect разрешено?
Этот вопрос не соответствует теме, потому что он должен спросить на странице GitHub для проекта (https://github.com/pboling/flag_shih_tzu) –
@Ryan Bigg: Являются ли вопросы о драгоценных камнях, не связанных с StackOverflow? Разве Rails не камень? –