powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / [mySQL] Поиск. Большие объемы
30 сообщений из 30, показаны все 2 страниц
[mySQL] Поиск. Большие объемы
    #39873123
kalamfur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе утро!

Есть таблица на ~ 400 000 000 записей. Один из столбцов хранит 12-ти символьный идентификатор (321654987021).
требуется выборка по этому столбцу. Многократная. Требуется проверить на вхождение массив из ~ 90 000 идентификаторов. Оптимально ли для таких объемов использовать MySQL?

Спасибо)
...
Рейтинг: 0 / 0
[mySQL] Поиск. Большие объемы
    #39873125
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kalamfurОптимально ли для таких объемов использовать MySQL?Зависит от предъявляемых требований и имеющихся ресурсов.
Потенциально - вполне реально.

Если покажете конкретные данные (структуры таблиц, образец данных, SQL-запрос), то подскажем как оптимизировать.
...
Рейтинг: 0 / 0
[mySQL] Поиск. Большие объемы
    #39873162
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kalamfurОдин из столбцов хранит 12-ти символьный идентификатор (321654987021).Тип данных - целочисленный? Поле индексировано?

kalamfurТребуется проверить на вхождение массив из ~ 90 000 идентификаторов.Слить их во временную таблицу, проиндексировать - JOIN взлетит...
...
Рейтинг: 0 / 0
[mySQL] Поиск. Большие объемы
    #39873219
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akinaпроиндексировать - JOIN взлетиттут индексировать нужно большую таблицу.
А лучше сразу ПК на это поле.
...
Рейтинг: 0 / 0
[mySQL] Поиск. Большие объемы
    #39873285
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, если, например, в таблице 400 000 000 строк и среди них 1/4 с текстом
есть ли смысл текст в отдельной таблице держать, чтобы эта была лёгкой, в которой одни цифры?
...
Рейтинг: 0 / 0
[mySQL] Поиск. Большие объемы
    #39873293
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухкстати, если, например, в таблице 400 000 000 строк и среди них 1/4 с текстом
есть ли смысл текст в отдельной таблице держать, чтобы эта была лёгкой, в которой одни цифры?в отдельной таблице хранить только поле с текстом или целиком всю запись?
Если первое, то для исходного вопроса смысла нет. Если второе, то смысл в некоторых случаях может быть.
В общем, зависит от деталей.
...
Рейтинг: 0 / 0
[mySQL] Поиск. Большие объемы
    #39873309
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftтут индексировать нужно большую таблицу.За это я уже спросил - ждём, появится ли автор...
...
Рейтинг: 0 / 0
[mySQL] Поиск. Большие объемы
    #39873352
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft, только текст
случаи, когда этот текст нужен не всегда - тут конечно смысл есть
но вот случаи, когда он нужен вместе с основной таблицей, будут работать медленнее
...
Рейтинг: 0 / 0
[mySQL] Поиск. Большие объемы
    #39876092
kalamfur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft, Akina, Вот такая таблица:

Код: 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.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
DROP TABLE IF EXISTS `bigdata`;

CREATE TABLE `bigdata` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `date` date DEFAULT NULL,
  `number` bigint(20) DEFAULT NULL,
  `name` varchar(20) CHARACTER SET cp1251 DEFAULT NULL,
  `sec_id1` bigint(20) DEFAULT NULL,
  `sec_id2` bigint(20) DEFAULT NULL,
  `name2` varchar(20) CHARACTER SET cp1251 DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `numb` (`number`)
) ENGINE=InnoDB AUTO_INCREMENT=10100001 DEFAULT CHARSET=utf8;

DELIMITER $$

USE `test`$$

DROP FUNCTION IF EXISTS `filler`$$

CREATE DEFINER=`root`@`%` FUNCTION `filler`(lim INT) RETURNS INT(11)
BEGIN
    DECLARE cnt INT DEFAULT 0;
    DECLARE f_numb BIGINT DEFAULT 222222222222;
    DECLARE f_name VARCHAR (20);
    DECLARE f_name2 VARCHAR (20);
    DECLARE f_date DATE;
    DECLARE f_id1 BIGINT;
    DECLARE f_id2 BIGINT;
    WHILE
        cnt < lim DO SET f_numb = f_numb + 1;
        SET f_name = ELT(
            0.5 + RAND() * 6,
            'Иван',
            'Андрей',
            'Артем',
            'Дима',
            'Вова',
            'Саша'
        );
        SET f_name2 = ELT(
            0.5 + RAND() * 6,
            'Сидоров',
            'Иванов',
            'Петров',
            'Матроскин',
            'Воробьянинов',
            'Селезнев'
        );
        SET f_date = TIMESTAMPADD(
            SECOND,
            FLOOR(
                RAND() * TIMESTAMPDIFF(
                    SECOND,
                    '2015-01-07 00:00:00',
                    '2019-08-24 00:00:00'
                )
            ),
            '2015-01-07 00:00:00'
        );
        SET f_id1 = FLOOR(RAND() * 999999999999);
        SET f_id2 = FLOOR(RAND() * 999999999999);
        INSERT INTO `test`.`bigdata` (
            `date`,
            `number`,
            `name`,
            `sec_id1`,
            `sec_id2`,
            `name2`
        )
        VALUES
            (
                f_date,
                f_numb,
                f_name,
                f_id1,
                f_id2,
                f_name2
            );
        SET cnt = cnt + 1;
    END WHILE;
    RETURN cnt;
END$$

DELIMITER ;

SELECT filler(1000000);




соответственно, по полю number и интересует выборка
как я понял самое правильное это временная таблица и JOIN ?

ps: пардон, совсем отвлекли на работе, замотался не ответил сразу
...
Рейтинг: 0 / 0
[mySQL] Поиск. Большие объемы
    #39876270
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kalamfurпо полю number и интересует выборкаКакая повторяемость значений в этом поле ожидается?
...
Рейтинг: 0 / 0
[mySQL] Поиск. Большие объемы
    #39876323
kalamfur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,
номера могут повторяться, т.е. не удастся назначить уникальный ключ или ПК.
Текста не будет, это телефонные номера, соотв. однотипный набор цифр
...
Рейтинг: 0 / 0
[mySQL] Поиск. Большие объемы
    #39876420
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kalamfur,

Т.е. повторяемость будет низкая?
Тогда индекса на это поле будет достаточно, скорее всего.
...
Рейтинг: 0 / 0
[mySQL] Поиск. Большие объемы
    #39876492
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторТогда индекса на это поле будет достаточно, скорее всего.
вынести в отдельную таблицу и кластерный индекс по нему сделать.
...
Рейтинг: 0 / 0
[mySQL] Поиск. Большие объемы
    #39876508
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowкластерный индекс по нему сделать.значение не уникальное.
...
Рейтинг: 0 / 0
[mySQL] Поиск. Большие объемы
    #39876524
kalamfur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftТ.е. повторяемость будет низкая?
Тогда индекса на это поле будет достаточно, скорее всего.

для поиска имеет смысл формировать временную таблицу и JOIN'ить ?
...
Рейтинг: 0 / 0
[mySQL] Поиск. Большие объемы
    #39876530
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторзначение не уникальное.
добить чем нить до уникального.
...
Рейтинг: 0 / 0
[mySQL] Поиск. Большие объемы
    #39876581
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kalamfurmiksoftТ.е. повторяемость будет низкая?
Тогда индекса на это поле будет достаточно, скорее всего.

для поиска имеет смысл формировать временную таблицу и JOIN'ить ?если за раз искать все 90000 значений, то да.
...
Рейтинг: 0 / 0
[mySQL] Поиск. Большие объемы
    #39876769
kalamfur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо!
...
Рейтинг: 0 / 0
[mySQL] Поиск. Большие объемы
    #39876841
kalamfur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ScareCrowавторзначение не уникальное.
добить чем нить до уникального.

Тогда придется перебирать LIKE'ом. Это ж медленнее, нет?
...
Рейтинг: 0 / 0
[mySQL] Поиск. Большие объемы
    #39876845
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kalamfurТогда придется перебирать LIKE'ом. Это ж медленнее, нет?если mysql 8+ то не очень
для 10 000 000 поиск заранее отсутствующей комбинации (т.е. сканирование всей таблицы) - 3-4 сек.
но надо проверять.
...
Рейтинг: 0 / 0
[mySQL] Поиск. Большие объемы
    #39876923
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторТогда придется перебирать LIKE'ом.
зачем?
автордля 10 000 000 поиск заранее отсутствующей комбинации
моментально. кластерный индекс же есть, зачем сканировать?
...
Рейтинг: 0 / 0
[mySQL] Поиск. Большие объемы
    #39877141
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowмоментально. кластерный индекс же есть, зачем сканировать?для like?
...
Рейтинг: 0 / 0
[mySQL] Поиск. Большие объемы
    #39877203
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяScareCrowмоментально. кластерный индекс же есть, зачем сканировать?для like?
вы доку читали?
...
Рейтинг: 0 / 0
[mySQL] Поиск. Большие объемы
    #39877285
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowвы доку читали?дай ссылку
...
Рейтинг: 0 / 0
[mySQL] Поиск. Большие объемы
    #39877310
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowмоментально. кластерный индекс же есть, зачем сканировать?для like '%xxx%' ?
...
Рейтинг: 0 / 0
[mySQL] Поиск. Большие объемы
    #39877320
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяScareCrowмоментально. кластерный индекс же есть, зачем сканировать?для like?Пока никакой потребности в like не видно. Не знаю, зачем ТС его упомянул.
...
Рейтинг: 0 / 0
[mySQL] Поиск. Большие объемы
    #39878214
kalamfur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftвадяпропущено...
для like?Пока никакой потребности в like не видно. Не знаю, зачем ТС его упомянул.

Видимо, я не так понял фразу "добить чем нить до уникального."

В моем понимании, если чем-то добивать до уникального, то потом при попытке проискать JOIN'ом с временной таблицей, "дополненные" значения не будут затронуты
...
Рейтинг: 0 / 0
[mySQL] Поиск. Большие объемы
    #39878257
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kalamfurВидимо, я не так понял фразу "добить чем нить до уникального."я понял как "добавить второе поле с уникальными значениями, идущее после нужного"
...
Рейтинг: 0 / 0
[mySQL] Поиск. Большие объемы
    #39878304
kalamfur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftя понял как "добавить второе поле с уникальными значениями, идущее после нужного"
Ну так если искать по полю с реальными телефонами, (там где попадаются дубли), то и не нужен LIKE, но тогда не будут работать кластерные индексы, отстроенные по "уникализированным" значениям соседнего столбца.
Если же искать по второму полю с уникальными значениями, то тут как раз для JOIN потребуется LIKE('xxx%') , имхо
...
Рейтинг: 0 / 0
[mySQL] Поиск. Большие объемы
    #39878500
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kalamfurНу так если искать по полю с реальными телефонами, (там где попадаются дубли), то и не нужен LIKE, но тогда не будут работать кластерные индексы, отстроенные по "уникализированным" значениям соседнего столбца.
Код: sql
1.
2.
3.
4.
5.
6.
CREATE TABLE `bigdata` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `number` bigint(20) NOT NULL,
  ... другие поля ...
  PRIMARY KEY (`number`,`id`)
) ENGINE=InnoDB

Код: sql
1.
SELECT * FROM `bigdata` WHERE `number`=321654987021

Проверяйте.
...
Рейтинг: 0 / 0
30 сообщений из 30, показаны все 2 страниц
Форумы / MySQL [игнор отключен] [закрыт для гостей] / [mySQL] Поиск. Большие объемы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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