|
-15 / 0 / 0
Регистрация: 12.11.2020
Сообщений: 335
|
|
Что предпочесть id или самостоятельное формирование уникального ключа для таблицы06.01.2025, 19:42. Показов 2092. Ответов 39
Метки нет (Все метки)
Имеется у меня таблица с большим количеством товара и от разных поставщиков.
Написал знакомому программисту, к способностям которого отношусь с уважением, поэтому решил посоветоваться с ним: Не вижу необходимости в id - думаю от него отказаться, а вместо него использовать иное ключевое поле, например id поставщика товара + № пп товара. Соображения, но далеко не все: id практически не используется, кроме того после удаления предложения будут образовываться "дыры" - и какой в нем (данном поле) смысл ? Самое главное - вывод информации, используя индекс по id, применяться будет не так часто. Получил ответ: Вы усложняете. Проще сделать обычным образом через id (это поле всё равно заводится) и индексы по полям, по которым нужен быстрый поиск. Его ответ меня не убедил (думаю, может быть неполным или он может ошибаться), поэтому решил обратиться за советом к знатокам: • Действительно ли будет создаваться автоматически id ? (Вообще-то реализовать свой уникальный ключ (ключи) не представляется сложной проблемой, наверное, основная цель затеи - зачем занимать (засорять) память, если даже не столько могу, сколько у меня и так будут уникальные ключи для каждой записи). • Второй вопрос: скорость выборки: для id мне хватит 5-ти значного числа, а при формировании своего ключа число цифр увеличится, скажем до 8 знаков. И соответственно, хотя оба варианта и будут проиндексированы, но во втором случае соответственно "дыры" между записями будут заметно большими. (но и для id они также будут, причем будут постоянно увеличиваться разрывы между записями, хотя и не такими заметными) Насколько это серьезный минус - т.е. скорость выборки с использованием индекса по ключу будет ли заметно отличаться от поиска по id ?
0
|
|
| 06.01.2025, 19:42 | |
|
Ответы с готовыми решениями:
39
Формирование уникального ключа
Отличие уникального ключа и уникального индекса |
|
-15 / 0 / 0
Регистрация: 12.11.2020
Сообщений: 335
|
|||
| 07.01.2025, 13:34 [ТС] | |||
|
* Я не спорю или пытаюсь что-то доказать - для этого у меня нет знаний, а просто высказываю соображения - какую-либо определенную запись (карточку товара) - группу записей по определенному признаку (принадлежность к поставщику) т.е. данный индекс выполнял бы с успехом две функции (цели) И, если по любому полю, имеющему индекс, "Скорость поиска по нему - логарифмическая, что на русском значит "очень быстро". " как Вы написали - то тогда и не понимаю причины, почему плохо в рамках оптимизации отказаться от id
0
|
|||
|
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
|
|
| 07.01.2025, 13:49 | |
|
далось тебе это id, нет такого понятия, есть понятие первичный ключ, а как он будет называться зависит от фантазии разработчика. хоть id, хоть папа римский, не рекомендую конечно так называть, гемморойно. дальше - самый удобный первичный ключ аутоинкрементный, заполняющийся без участия пользователя. если кровь из носу хочется усложнить себе жизнь и замедлить время создания записи, то пожалуйста - сам рассчитвай его значение, плюшек это не прибавит 100%, тем более не рассчитывай на ускороение доступа по ключу - обломится. вот и все. не чего мусолить одно и тоже. дырки его пугают, 100 раз ха-ха и даже хи-хи
0
|
|
|
14078 / 9295 / 1347
Регистрация: 21.01.2016
Сообщений: 34,895
|
||
| 07.01.2025, 14:00 | ||
|
Я уже уставать начал от этой беседы. Будто бы пытаюсь убедить человека, что не надо всё делать через задницу, а он мне новые пути озвучивает, как можно всё усложнить, чтобы решить проблему, которую он на ходу придумывает...
0
|
||
|
-15 / 0 / 0
Регистрация: 12.11.2020
Сообщений: 335
|
||
| 07.01.2025, 15:28 [ТС] | ||
|
Давайте подведу итог под данной темой.
Задал два вопроса: неявное формирование поля id при его отсутствии и сравнительная скорость выборки (опять повторяюсь, но для понимания) На первый, спасибо Gluck99, ответ получил достаточно быстро. А на второй, хоть мне и пришлось его объяснять (повторять) мин еще два раза, так и не получил - хотя на основании их, как мне видится, и формируется целесообразность выбора технологии. А в процессе темы только и делаю, что даю ответы, либо объясняю недопонимания (это уже камень и в мой адрес, раз меня не могут понять) Аватар, мне перед Вами постоянно приходится извиняться за то, что Вы меня не понимаете (а м.б. я Вас) - id как термин использую вместо AUTO_INCREMENT как более короткий. - дыры не пугают - они будут в любом случае, а о них упомянул только в связи со вторым вопросом. Добавлено через 17 минут Gluck99, отдельное спасибо за Ваш подробный комментарий. Некоторые комментарии По вопросу "бомба замедленного действия": Вы и правы и нет, думаю надо рассматривать каждый конкретный случай в отдельности. (к слову у меня единица даже не товар, по крайней мере пока, а его привел просто как пример). • возможный вариант: для товара под каждого поставщика создается своя запись (с учетом, например, того, что цены и не только они могут быть разными), А уже у них могут быть ссылки на общую часть (описание) • ID-поставщика - величина не постоянная. => совершенно верно, ушел продавец, будут удалены и все записи, относящиеся к нему. (кстати, их надо будет удалять в любом случае, независимо от типа ключа: id или сформированный самостоятельно. 4) "Номер по порядку" - не говорил, что обязательно его использовать, а о возможности его использования при отсутствии сортировки - просто как дополнение для уникальности кода - а что такое id как не тот же порядковый номер (такой же бессмысленный во многих случаях) Если хотите, можете не отвечать - в целом вы мне помогли, дав ряд советов.
0
|
||
|
408 / 242 / 88
Регистрация: 28.04.2022
Сообщений: 1,207
|
|||
| 07.01.2025, 15:58 | |||
Сообщение было отмечено 755 как решение
РешениеК тому же вы упускаете ещё одну важную деталь, уже чисто техническую, имеющую отношение к программированию: а насколько архитектура вашей БД расположена к составлению простых и лаконичных запросов на выборку и обновление данных? И если вы примете неверное стратегическое решение по архитектуре БД сейчас, то в дальнейшем это приведёт к тому, что ваши запросы будут неоптимальными. А неоптимальный запрос, который вам придётся вынужденно писать - это падение производительности в разы, иногда на порядки, а не на 0.1% из-за какого-то не такого индекса. Вот о чём нужно реально думать, а не о дырках в массивах идентификаторов.
1
|
|||
|
-15 / 0 / 0
Регистрация: 12.11.2020
Сообщений: 335
|
|
| 07.01.2025, 16:20 [ТС] | |
|
Благодарю Вас, Gluck99, за развернутый ответ.
Да, Usaga, упомянул о логарифмической скорости, но не смог понять, что это ответ на мой вопрос. В таком случае не буду отнимать больше у всех время, и информация для размышления получена. С огромной благодарностью за помощь.
0
|
|
|
152 / 136 / 26
Регистрация: 12.12.2020
Сообщений: 1,125
|
|
| 07.01.2025, 16:41 | |
|
В программировании существуют так называемые патенты программирования. Это условные правила. Зачастую они не несут никаких технических ограничений, но они облегчают разработку, сопровождение и понимает проекта.
Так и тут. Можно замутить свой ключ, обозвать его по другому но возможно когда через полгода кто то другой полезет в базу - он не поймет ваш замысел. Например когда я использую форейн ключи я всегда в комментариях пишу - вот эту запись из таблицы мы удаляем сами, а записи из той таблицы удалятся/обнуляться сами так как привязаны через форейн ключи. Что бы через какое-то время не ломать голову как и что там работает.
1
|
|
|
-15 / 0 / 0
Регистрация: 12.11.2020
Сообщений: 335
|
|
| 07.01.2025, 17:26 [ТС] | |
|
Благодарю Вас за совет, Alex1126, с этим проблем не должно быть - написать руководство по БД несложно. Вот с структурой документации по клиентской части действительно не могу определиться. Даже для себя.
0
|
|
|
152 / 136 / 26
Регистрация: 12.12.2020
Сообщений: 1,125
|
||
| 07.01.2025, 21:52 | ||
смысл использования стандартных решений именно в том что они понятны, условно, всем и не требуют чтения документации.
0
|
||
|
-15 / 0 / 0
Регистрация: 12.11.2020
Сообщений: 335
|
||
| 07.01.2025, 22:14 [ТС] | ||
|
0
|
||
|
408 / 242 / 88
Регистрация: 28.04.2022
Сообщений: 1,207
|
||
| 08.01.2025, 03:00 | ||
|
1
|
||
|
14078 / 9295 / 1347
Регистрация: 21.01.2016
Сообщений: 34,895
|
||
| 08.01.2025, 05:21 | ||
|
0
|
||
|
-15 / 0 / 0
Регистрация: 12.11.2020
Сообщений: 335
|
||||||||||||
| 08.01.2025, 09:29 [ТС] | ||||||||||||
|
А вообще хотел написать, что Вы в основном правы в моем отношении к id (хотя похоже это написал Usaga, ) вспомнил об этом не сразу (возможно что-то забылось с течением времени) - у меня было несколько случаев, когда даже не рассматривал возможность использования id: • при реализации многоуровневого дерева категорий товаров (причем, программист, которому была интересна моя реализация, предложил свой вариант (общепринятый по его словам), но тоже без id. • Другой же конкретный пример, как раз с использованием № пп (то, о чем рассуждали ранее) и что (о чем забыл), оказывается уже использовал ранее. Реализовывал Справочник производителей товара (было примерно 1000 записей). Тогда только начинал осваивать php+mysql, поэтому естественно сформировал структуру:
Возможно и даже быстрей всего, кто-то более умный предложит более изящное решение, но мое было таким:
На самом деле под номер для подстраховки использовал 2 символа - тот самый минус данного метода (ограничение на количество, о котором упоминал ранее). В результате после замены поля id на kl в таблице 1 и формировании индекса по нему, все прекрасно сортировалось по названию. Ps Потом ради интереса, когда продумаю структуру таблиц, посмотрю, возможно даже в 90% случаях не увижу в нем смысла. На этом все по этой теме, хотелось бы больше к ней не возвращаться
0
|
||||||||||||
|
408 / 242 / 88
Регистрация: 28.04.2022
Сообщений: 1,207
|
||||
| 08.01.2025, 11:15 | ||||
|
Ещё замечу, что запрос на выборку без указания направления сортировки не гарантирует порядок записей. Поэтому в один прекрасный момент пользователь вашей чудо-системы может получить сюрприз. Сообразительный человек давно бы сообразил, что использование готовых решений - самый быстрый путь к достижению цели.
0
|
||||
|
14078 / 9295 / 1347
Регистрация: 21.01.2016
Сообщений: 34,895
|
||||
| 08.01.2025, 11:18 | ||||
|
0
|
||||
| 08.01.2025, 11:34 | |
|
Не по теме: чайник возомнивший себя знатоком троллит всех подряд ))
0
|
|
|
-15 / 0 / 0
Регистрация: 12.11.2020
Сообщений: 335
|
|||||||||||
| 08.01.2025, 12:36 [ТС] | |||||||||||
|
Сообщаю: ответы на вопросы получил, информации достаточно для решения своей проблемы (хотя в данном случае это не проблема, а поиск оптимального решения). Просто в знак благодарности думал, м.б. мое решение окажется полезным для кого-либо. Как говорится - на нет, и суда нет. Например, справочник стран или городов можно сразу сформировать по алфавиту. Или при хранении const js в таблице, о которых рассуждали только вчера в теме по js. Gluck99, повторюсь, но если Вам не может быть интересна данная мысль, то и можно дальше не продолжать - об этом написал только в знак благодарности, для меня все это пройденный этап. Есть
название производителя (по алфавиту) + данные из таблицы Какой можно применить индекс по Таблице 1 для вывода данных в таком (естественном, ибо по алфавиту) формате ? В случае использования для связи id Добавлено через 9 минут
0
|
|||||||||||
|
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
|
||
| 08.01.2025, 12:44 | ||
|
1
|
||
|
408 / 242 / 88
Регистрация: 28.04.2022
Сообщений: 1,207
|
|||||||
| 08.01.2025, 15:24 | |||||||
|
Пример на ваших данных:
0
|
|||||||
|
-15 / 0 / 0
Регистрация: 12.11.2020
Сообщений: 335
|
|
| 08.01.2025, 16:04 [ТС] | |
|
Спасибо за пример, Gluck99.
Думаю, на этом заканчиваем. И конечно же не отказываюсь от чтения литературы. Добавлю, что на самом деле mysql изначально изучал по Никсону там было все просто, поэтому можно назвать и данную книгу букварем. А потом уже искал ответы на некоторые важные на мой взгляд вопросы.
0
|
|
| 08.01.2025, 16:04 | |
|
Помогаю со студенческими работами здесь
40
Обновление уникального ключа Получение уникального ключа из последовательности символов Обработка исключения дублирования уникального ключа Формирование ключа для генератора псевдослучайных чисел Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|