Гость
Форумы / MySQL [игнор отключен] [закрыт для гостей] / [mySQL] Поиск. Большие объемы / 25 сообщений из 30, страница 1 из 2
08.10.2019, 08:16
    #39873123
kalamfur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[mySQL] Поиск. Большие объемы
Доброе утро!

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

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

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

kalamfurТребуется проверить на вхождение массив из ~ 90 000 идентификаторов.Слить их во временную таблицу, проиндексировать - JOIN взлетит...
...
Рейтинг: 0 / 0
08.10.2019, 11:21
    #39873219
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[mySQL] Поиск. Большие объемы
Akinaпроиндексировать - JOIN взлетиттут индексировать нужно большую таблицу.
А лучше сразу ПК на это поле.
...
Рейтинг: 0 / 0
08.10.2019, 12:37
    #39873285
полудух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[mySQL] Поиск. Большие объемы
кстати, если, например, в таблице 400 000 000 строк и среди них 1/4 с текстом
есть ли смысл текст в отдельной таблице держать, чтобы эта была лёгкой, в которой одни цифры?
...
Рейтинг: 0 / 0
08.10.2019, 12:41
    #39873293
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[mySQL] Поиск. Большие объемы
полудухкстати, если, например, в таблице 400 000 000 строк и среди них 1/4 с текстом
есть ли смысл текст в отдельной таблице держать, чтобы эта была лёгкой, в которой одни цифры?в отдельной таблице хранить только поле с текстом или целиком всю запись?
Если первое, то для исходного вопроса смысла нет. Если второе, то смысл в некоторых случаях может быть.
В общем, зависит от деталей.
...
Рейтинг: 0 / 0
08.10.2019, 12:54
    #39873309
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[mySQL] Поиск. Большие объемы
miksoftтут индексировать нужно большую таблицу.За это я уже спросил - ждём, появится ли автор...
...
Рейтинг: 0 / 0
08.10.2019, 14:06
    #39873352
полудух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[mySQL] Поиск. Большие объемы
miksoft, только текст
случаи, когда этот текст нужен не всегда - тут конечно смысл есть
но вот случаи, когда он нужен вместе с основной таблицей, будут работать медленнее
...
Рейтинг: 0 / 0
14.10.2019, 16:20
    #39876092
kalamfur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[mySQL] Поиск. Большие объемы
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
14.10.2019, 21:19
    #39876270
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[mySQL] Поиск. Большие объемы
kalamfurпо полю number и интересует выборкаКакая повторяемость значений в этом поле ожидается?
...
Рейтинг: 0 / 0
15.10.2019, 08:21
    #39876323
kalamfur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[mySQL] Поиск. Большие объемы
miksoft,
номера могут повторяться, т.е. не удастся назначить уникальный ключ или ПК.
Текста не будет, это телефонные номера, соотв. однотипный набор цифр
...
Рейтинг: 0 / 0
15.10.2019, 11:02
    #39876420
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[mySQL] Поиск. Большие объемы
kalamfur,

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

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

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

Тогда придется перебирать LIKE'ом. Это ж медленнее, нет?
...
Рейтинг: 0 / 0
16.10.2019, 08:21
    #39876845
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[mySQL] Поиск. Большие объемы
kalamfurТогда придется перебирать LIKE'ом. Это ж медленнее, нет?если mysql 8+ то не очень
для 10 000 000 поиск заранее отсутствующей комбинации (т.е. сканирование всей таблицы) - 3-4 сек.
но надо проверять.
...
Рейтинг: 0 / 0
16.10.2019, 10:23
    #39876923
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[mySQL] Поиск. Большие объемы
авторТогда придется перебирать LIKE'ом.
зачем?
автордля 10 000 000 поиск заранее отсутствующей комбинации
моментально. кластерный индекс же есть, зачем сканировать?
...
Рейтинг: 0 / 0
16.10.2019, 15:40
    #39877141
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[mySQL] Поиск. Большие объемы
ScareCrowмоментально. кластерный индекс же есть, зачем сканировать?для like?
...
Рейтинг: 0 / 0
16.10.2019, 16:43
    #39877203
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[mySQL] Поиск. Большие объемы
вадяScareCrowмоментально. кластерный индекс же есть, зачем сканировать?для like?
вы доку читали?
...
Рейтинг: 0 / 0
16.10.2019, 20:20
    #39877285
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[mySQL] Поиск. Большие объемы
ScareCrowвы доку читали?дай ссылку
...
Рейтинг: 0 / 0
16.10.2019, 21:50
    #39877310
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[mySQL] Поиск. Большие объемы
ScareCrowмоментально. кластерный индекс же есть, зачем сканировать?для like '%xxx%' ?
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / [mySQL] Поиск. Большие объемы / 25 сообщений из 30, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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