У меня есть большая база данных SQL Server с примерно 40 столбцами и сотнями миллионов строк.Оптимизация запросов - равенство VARCHAR vs Числовое равенство
Эта таблица должна быть свободной в схеме, поэтому у меня есть много столбцов как VARCHAR (MAX), даже если это может быть BIGINT, DATETIME, INT и т. Д. Это влияет на запросы времени/эффективности? например будет
SELECT TOP 100 * FROM CustomerId = 34343
быстрее, чем
SELECT TOP 100 * FROM CustomerId = '34343'
? Если да, то насколько быстрее?
А что, если я использую VARCHAR (MAX) вместо фиксированной длины VARCHAR .. А как насчет других БД, таких как mySQL и т. Д. В этом отношении?
Я содрогаюсь от мысли, что таблица должна быть свободной в схеме. Это ошибка размеров мамонта. Гибкость - производительность - выберите один. Я гарантирую, что ваши пользователи хотят производительности больше, чем гибкая схема. Сохраняйте гибкость для редких случаев, не являющихся важной частью вашего дизайна системы. Недостаточно для использования varchar для чисел, что означает, что вам придется преобразовать их обратно в число, чтобы делать какие-либо расчеты отчетности (и у вас будет плохая целостность данных, как в значительной степени гарантия), но использование varchar для дат еще хуже. Если вам не нравится пытаться интерпретировать, как обращаться с 02/30/2010. – HLGEM
Вы не говорите, что используете таблицу EAV, но в этой статье может указывать на то, почему свободные схемы - плохой дизайн - вы хотите получить данные назад и запросить этот беспорядок: http: //www.simple -talk.com/opinion/opinion-pieces/bad-carma/ – HLGEM
На самом деле мы иногда получаем данные об мусоре, и нам нужно регистрировать это. Таким образом, мы могли бы получить customerID = 568d4, который не будет регистрироваться, если у меня есть clientId как числовой. мы пытаемся выяснить что-то, хотя –