#sql-server #database
#sql-сервер #База данных
Вопрос:
- Зачем использовать
rowguid
и каковы преимущества? - Предположим, у компании тысячи клиентов, хорошо ли разделять их по признаку пола для повышения производительности и быстрого запроса, если нет, то почему?
- Как крупные компании, такие как Facebook, обрабатывают свой первичный ключ для своих комментариев, пользователей и других вещей, например:
Предположим, есть пять пользователей с первичным ключом 1,2,3,4,5…
Что делать, если пользователь 3 будет удален оттуда, теперь останется 1,2,4,5, что является своего рода разрывом между непрерывной цепочкой. Как они с этим справляются?
Комментарии:
1. Вы не должны пытаться написать вопрос в заголовке. Заголовок должен быть простым, а в основной части — задать вопрос (с дополнительной информацией).
2. Для # 2: у вас есть не более трех полов — мужской, женский, компания — и это не очень помогает с большим количеством строк. Кроме того: таблица с тысячами строк (для всех ваших клиентов) ничего не значит для SQL Server — она может обрабатывать сотни миллионов строк в одной таблице, без проблем.
Ответ №1:
- Не знаю — может быть, вы используете неавтоматическое значение, чтобы сохранить его постоянным в других базах данных (возможно, для использования с интеграцией 3-й части и т.д.)
- Не разделяйте по такому полю, как пол, если вы не знаете пол (или хотите получить полный список), вам придется искать в двух таблицах, также, если вы хотите добавить другую фильтрацию / поиск, вам придется снова выполнять поиск по нескольким таблицам
- Ну и что, что в цепочке идентификаторов есть пробел — это ни на что не влияет. Почему вы думаете, что это важно?
Комментарии:
1. @SaqyGee: Нет, не разделяйте таблицу. как сказал marc_s в комментарии, SQL Server может справиться с этим, не беспокоясь о производительности. Разделение таблицы на 2 части по 1000 строк, вероятно, потребует большего снижения производительности, чем 1 таблица с 10000 строками (если не больше)
2. спасибо за ответ, но 2-й вопрос, я просто предположил, что пример будет более точным, давайте предположим, что это категория stackoverflow sql server и c #, где люди задают вопросы относительно этих технологий, так что это хороший подход, чтобы разделить их на основе этих уважаемых технологий и в 3-м вопросе, который я рассматриваюэто важный вопрос .. предположим, что int может сохранить до 8 чисел, где есть 1,2,3,4,5 пользователей, где пользователь 3,4,5 удаляется, чем в базе данных 1,2 остается, что делать, если больше пользователей регистрируют 1,2,6,7,8 и 9 приращения PK вызывают переполнение, но мы все равно получили индекс 3,4,5, который был потрачен впустую
3. @SaqyGee: нет, искусственно разделять ваши таблицы — плохая идея ! Проанализируйте свои запросы, используйте правильные индексы — и ваш SQL Server будет обрабатывать сотни миллионов строк в одной таблице…
4. @SaqyGee: Что значит «int может сохранять до 8 чисел»? Я думаю, что у вас что-то серьезно не так с вашим приложением здесь
5. нет, нет, брат, не пойми меня неправильно, я знаю, что integer может сохранять до большого количества значений, на самом деле я создаю базу данных для своей собственной сети, и я сказал, что предположим, что int может сохранить 8 чисел …. вы знаете, что веб-сайт содержит действительно большое количество данных в нем, как facebook, где миллионы людей ежедневно оставляют комментариии из опубликованных комментариев 1000 также удаляются пользователями… и, возможно, facebook также удаляет старые комментарии, поэтому, если они не справятся с разрывом между своими первичными ключами, их PK будет продолжать увеличиваться, и однажды это будет переполнение .. и мы знаем, что этого не произошло, у них есть какая-то техника —>