powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Тестовая таблица id parent_id
12 сообщений из 12, страница 1 из 1
Тестовая таблица id parent_id
    #39187729
Подскажите может кто делал или возможно есть инструменты для генерации таблицы
Колонки id и parent_id
Структура дерево
Вложенность 3-6
Количество строк 10к-100к

Если кто-то делал или может выгрузить из готового дерева буду признателен.
Заранее спасибо.
...
Рейтинг: 0 / 0
Тестовая таблица id parent_id
    #39187767
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Николай Жуковинструменты для генерации таблицыdevart'овский посмотрите. Не знаю, правда, есть там деревья или нет, но скорее всего есть.
...
Рейтинг: 0 / 0
Тестовая таблица id parent_id
    #39187802
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что за лень... )))
N-вложенность, за счет разброса значений получите примерно все нормально, нежели искать таблицу "цифирек"
Код: sql
1.
2.
3.
4.
SELECT 
  ROUND(RAND()*( N -1)+1,0) as id, 
  ROUND(RAND()*( N -1)+1,0) as parent_id   
FROM (select 1 from БОЛЬШАЯ_ТАБЛИЦА_НА_10к-100к) as psevdo_big_table
...
Рейтинг: 0 / 0
Тестовая таблица id parent_id
    #39187804
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.... это всего лишь пример для размышлений...
...
Рейтинг: 0 / 0
Тестовая таблица id parent_id
    #39187847
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
Код: sql
1.
 ROUND(RAND()*( N -1)+1,0) as id, 

А это зачем? там обычного автоинкремента достаточно будет.
...
Рейтинг: 0 / 0
Тестовая таблица id parent_id
    #39187871
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пытался только натолкнуть на мысль... поспешил конечно...
при использовании автоинкремента могут быть пробелы, где то проскакивало... т.е.
insert my_table (id_autoincrement) select ....
не всегда даст сплошное множество id_autoincrement, а нам нужно знать диапазон для след.уровня
по уму лучше использовать статическую генерацию ID, типа
заполнили первый уровень
Код: sql
1.
2.
insert into my_tab (id, id_parent) 
SELECT @a:=@a+1 as rownum,  0  from (select @a:= 0 ) as t, (SELECT 1 FROM big_table LIMIT  N )as tt/*N- количество первого уровня*/


далее продолжаем нумерацию и генерим ID_PARENT из известного диапазона, в RAND() контролируем диапазон генерации, LIMIT-ом ограничиваем кол-во элементов уровня.... и так далее )) 3-6 раз
...
Рейтинг: 0 / 0
Тестовая таблица id parent_id
    #39187872
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinovпри использовании автоинкремента могут быть пробелы, где то проскакивало... т.е.
insert my_table (id_autoincrement) select ....
не всегда даст сплошное множество id_autoincrementДумаю, тут это можно проигнорировать, т.к. одиночный INSERT и с таблицей пока еще никто не работает (в том смысле, что нет конкурентных INSERT-ов).
...
Рейтинг: 0 / 0
Тестовая таблица id parent_id
    #39187878
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

ну это я уже так... нахлобучил из того что в голове вспомнилось....
...
Рейтинг: 0 / 0
Тестовая таблица id parent_id
    #39188670
Допустим
Заполнил я таблицу вот так
Код: sql
1.
2.
3.
4.
5.
6.
INSERT INTO `test`(`id`, `parent_id`) 
SELECT 
  ROUND(RAND()*(10000-1)+1,0) as id, 
  ROUND(RAND()*(10000-1)+1,0) as parent_id   
FROM ТАБЛИЦА_4.6М AS si
WHERE si.ID<20000


Да имею 19999 записей
Предостаточно но есть дубли
То есть Уникальный индекс на Пару `id`, `parent_id` не прилепить
Да и закисленность встречается
...
Рейтинг: 0 / 0
Тестовая таблица id parent_id
    #39188690
Николай ЖуковДа и закисленность встречается
зацикленость
...
Рейтинг: 0 / 0
Тестовая таблица id parent_id
    #39188738
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Николай Жуков,

miksoft поправил мой НЕправильный вариант
id делаете автоикремент
заполняете первый уровень, допустим 1000 элементов
затем второй уровень
Код: sql
1.
2.
3.
4.
5.
INSERT INTO `test`(`parent_id`)
SELECT 
  /*ROUND(RAND()*( N -1)+1,0) as id, ---  это НЕ НАДО */
  ROUND(RAND()*( N -1)+1,0) as parent_id   /**N=1000 кол-во пред уровня/
FROM (select 1 from БОЛЬШАЯ_ТАБЛИЦА_НА_10к-100к LIMIT KKK) as psevdo_big_table

для заполнения следующего уровня в RAND() используете KKKK и N для генерации parent_id предыдущего уровня......дело техники...
...
Рейтинг: 0 / 0
Тестовая таблица id parent_id
    #39195093
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Факе есть пример вот такой моей процедуры создания тестовой таблицы простого дерева:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
# test(in integer search_num) {
BEGIN

SET @C='Special create table for ver.2: with composed primary key';

DROP TABLE IF EXISTS `tree`;
CREATE TABLE IF NOT EXISTS `tree` (
   `level`     int(11)          NOT NULL
  ,`parent_id` int(11) unsigned NOT NULL
  ,`id`        int(11) unsigned NOT NULL # auto_increment
  ,`data`      varchar(255) character set 'utf8' default ''
  ,PRIMARY KEY  (`level`,`parent_id`,`id`)
#  ,UNIQUE KEY `id` (`id`) -- for autoincrement needs!
  ,KEY `parent_id` (`parent_id`)
  ,KEY `id`        (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

SET @C='Inserting tree into table';
SET @depth = 10;
SET @maxLevel = 300;

SET @level = 0;
REPEAT
  SET @d = 1;
  REPEAT
    INSERT INTO `tree` SET
        `level`     = @level
      , `parent_id` = @parent:=IF(@level=0, 0, @d + FLOOR( RAND()*@level*@depth ) )
      , `id`        = @d + @level * @depth
      , `data`      = CONCAT('data for parent = ',@parent)
    ;
    SET @d = @d + 1;
  UNTIL @d > @depth END REPEAT;
  SET @level = @level + 1;
UNTIL @level > @maxLevel END REPEAT;
COMMIT;


Раскомментарил кусок со случайным заполнением и там не совсем та структура таблички, но за основу взять вроду бы можно..
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Тестовая таблица id parent_id
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]