1

Тема: MyPHPAdmin SQL запрос ранжирования по возрастанию (range c 1 до 10^18)

Впервые иду за помощью на форум. Па-Ма-Ги-ТИ!P.S. Самоучка - прошу объяснить как первоклашке.Задач супер проста, но ответов на просторах интернета не нашёл. Есть БД в

2 (изменено: Andry_ii, 2022-01-04 15:24:26)

Re: MyPHPAdmin SQL запрос ранжирования по возрастанию (range c 1 до 10^18)

Да уж.. Что-то не углядел, что текст обрежется(( Итак, по новой, уже покорче:

Впервые иду за помощью на форум. Па-Ма-Ги-ТИ!
P.S. Самоучка - прошу объяснить как первоклашке. Задач супер проста, но ответов на просторах интернета не нашёл.
Есть БД в MyPhpAdmin. Пишу её с нуля. Там пока только 1 столбец. Нужно, чтобы в этом столбце были значения по возрастанию от 1 до 999999999999999999

Знаю, что на питоне и в консоли cmd это команда "Range"... Но этот способ не вариант - слишком долго и последовательно.
Экспортом из эксель тоже не вариант, не хватает вычислительной мощности на такие объёмы. Заполняет часть и выкидывает с критической ошибкой.

Есть волшебный скрипт в sql чтобы забил и спустя какое время получит необходимый результат?

3

Re: MyPHPAdmin SQL запрос ранжирования по возрастанию (range c 1 до 10^18)

Или может я зря трачу время на MySQL..? Всего будет 100 квинтиллионов строк. Их нужно будет захешировать без соли в MD5. Может мне использовать что-то другое, более простое и более шустрое, для таких объёмов данных?

4

Re: MyPHPAdmin SQL запрос ранжирования по возрастанию (range c 1 до 10^18)

В зависимости от типа таблиц (MyISAM или InnoDB) будет разное количество строк, которое в свою очередь зависит от типа используемого первичным ключом.
BIGINT: https://dev.mysql.com/doc/refman/8.0/en … types.html

Если не хватит одной таблицы, то разбивайте на несколько.

Я с таким количеством строк не сталкивался и как будет себя вести MySQL - не знаю, к сожалению.

5 (изменено: Andry_ii, 2022-01-05 22:04:47)

Re: MyPHPAdmin SQL запрос ранжирования по возрастанию (range c 1 до 10^18)

Да. Есть такие ограничения, но вопрос в другом. Как заставить базу через MyPHPAdmin и/или чз что-то сопутствующим может, прописать весь столбик автоматически? (и я не про "первичный ключ"). Пробовал через строку SQL, но додумался только до:
<< INSERT INTO `tablica` (`Stolbec`) VALUES ('1'), ('2'), ('3'), (...), (999999999999999999); >>
А это долго жесть. Даже на питоне через <<Range>> если написать цифры по порядку, много времени займёт. Да и не вывезет он тайкой объём строк в коде, если я всё ок делал, хотя есть подозрения, что мог в первые разы INT выставить.. Тем не менее, должен же быть способ сделать это проще. P.S. Железо мощное (ноут), не оптимизированное, винда 11, делал через браузер хром - комменты относительно вычислительных мощностей приветствуются.

Как бы вот этот путь укоротить <<('1'), ('2'), ('3'), (...), (99999999999999999>> ?

Сама задача ещё интереснее, но пока встрял на этом участке.

6

Re: MyPHPAdmin SQL запрос ранжирования по возрастанию (range c 1 до 10^18)

Попробуйте использовать переменную в запросе (понадобится процедура), или сделать скрипт, который будет данные добавлять.
https://dev.mysql.com/doc/refman/5.7/en … ables.html

SET @a = @a + 1;

7 (изменено: Andry_ii, 2022-01-08 20:15:10)

Re: MyPHPAdmin SQL запрос ранжирования по возрастанию (range c 1 до 10^18)

Или я что-то не так делаю, или это не подходит... <<SET @a = @a + 1;>> это меняет на "+1" значения, которые уже имеются в столбце. А мне нужно, чтобы он сам создал и прописал все строки с шагом "+1". Тупо как в экселе растягиваешь вниз столбец с порядковыми номерами - вот конкретно такой результат мне нужен.

Поиски мануалов по <<SET>> указывают на то, что мой единственный (полуавтоматический) вариант - это следующее:
1. За'Python'ить код типа
<<for i in range(1, 999999999999999999): print(i); print ("--), (++");>>
#Знаки "--" и "++" в данном случае прописываются только для удаления пробелов путём автозамены этих самых символов.
Т.к. в конечном итоге мне нужно получить строки в виде <<(1), (2), (3), (4), (и так далее, до...), (999999999999999999);>>

2. чтобы подставить в SQL окне, моей базы данных, код типа:
<<INSERT INTO `tablica` (`Stolbec`) VALUES (1), (2), (3), (4), (5), (и т.д.);>>
(Или импортом из .txt файла, по частям - ибо весть код с 10^18 строк в sql не влезет, а весь .txt файл вряд-ли разом загрузит) Ещё не пробовал - не могу чёт заставить питон, сохранить результат запроса
<<for i in range(1, 999999999999999999): print(i); print ("--), (++");>> в .txt файл.
ТОЖЕ ВОПРОС КСТАТИ: Как заставить сохранить результат Питона в .txt документ?
P.S. Есть вариант без автосохранения в txt, но так дольше ранжирует, нежели в фоновом режиме.. Потому чисто как батник закодить бы, чтобы он мне выдал результат в отдельный файл, а не в окошко питона. (полагаю, тут не нужно объяснять)

3. В итоге должна собраться база лишь с одним столбцом в диапазоне:
Stolbec
000000000000000001
000000000000000002
000000000000000003
000000000000000004
000000000000000005
000000000000000006
000000000000000007
000000000000000008
000000000000000009
000000000000000010
000000000000000011
... и так далее ...
999999999999999997
999999999999999998
999999999999999999

BIGINT конечно же + UNSIGNED ZEOROFILL с 18 знаками. (т.е. он сам прописывает нули спереди и укладывается в интервал квинтиллиона цифр)

И таких баз будет несколько десятков.
Понятно, что будут добавлены ещё столбцы, но это уже "лирика"...
Сейчас задача: автоматизация + минимальные временные затраты.
Ибо даже путём "Range" (не в фоновом режиме = 200млн строк за сутки) это занимает не один день (если не лет), чего уж говорить про вручную.

Как я понял, в MyPhpAdmin нет такой "волшебной кнопочки", чтобы мне не собирать по кусочкам, которые расписал выше?

8

Re: MyPHPAdmin SQL запрос ранжирования по возрастанию (range c 1 до 10^18)

[/quote=Hanut] "(понадобится процедура), или сделать скрипт, который будет данные добавлять."

Этого не делал.. Не хватает знаний и навыков в данном вопросе. Лишь потыкался "как работает SET", поизучал матчасть по данной команде, к успеху не пришёл.

Правильно ли я понимаю, что через SQL можно скомпеллировать код, чтобы он в итоге нарисовал мне квинтиллион строк со значениями по порядку (от 1 до 10^18)?
Направь на мануал по созданию определённого количества строк, плз..
Мои идеи исчерпали себя