powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как сделать join двух больших таблиц?
14 сообщений из 14, страница 1 из 1
Как сделать join двух больших таблиц?
    #39521187
wissem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Первая таблица 20 млн записей, вторая 65тыс записей. В первой нет уникальных записей и она имеет 7 полей. Вторая таблица на одно поле, все записи уникальны. Обычный join наверное не подходит.... Что делать?
...
Рейтинг: 0 / 0
Как сделать join двух больших таблиц?
    #39521201
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wissemона имеет 7 полей. Вторая таблица на одно поле
Структуры в студию.

wissemОбычный join наверное не подходит
Сфига бы?
...
Рейтинг: 0 / 0
Как сделать join двух больших таблиц?
    #39521219
wissem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Первая таблица:

mdlnumber sub_code supplier_name weight_val weight_type price currency purity
MFCD00000014 AK176157 ARKPHARMINC 500 G 390 USD 95+%
MFCD00000014 AT-22094 ATOMOLE 1000 G 340 USD 98.0%
MFCD00000014 U65676 AURUMPHARMA 25 G 129 USD 98%
MFCD00000014 U65676 AURUMPHARMA 500 G 613 USD 98%
MFCD00000014 U65676 AURUMPHARMA 1 KG 1042.1 USD 98%
MFCD00000014 FB60350 CARBOSYNTH 25 G 55 USD
MFCD00000014 FB60350 CARBOSYNTH 50 G 94 USD
MFCD00000014 FB60350 CARBOSYNTH 100 G 160 USD
MFCD00000014 FB60350 CARBOSYNTH 250 G 320 USD
MFCD00000014 FB60350 CARBOSYNTH 500 G 544 USD
MFCD00000014 CML-22215 CHEMIELIVA 1 G 402 USD 99%
MFCD00000014 CML-22215 CHEMIELIVA 2 G 570 USD 99%
MFCD00000014 QD-4778 COMBI-BLOCKS 1 G 20 USD 97%

Вторая

id f_number
1 F9994-5419
2 F9994-5415
3 F9994-5414
4 F9994-5156
5 F9994-3234
6 F8881-8992
7 F1905-8728
...
Рейтинг: 0 / 0
Как сделать join двух больших таблиц?
    #39521250
wissem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сорри, а как вставить нормально данные, чтоб было понятно?
...
Рейтинг: 0 / 0
Как сделать join двух больших таблиц?
    #39521255
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wissemкак вставить нормально данные, чтоб было понятно?Выполнить на консоли
Код: sql
1.
SHOW CREATE TABLE <имя таблицы>;

и скопировать сюда результат.
Данные - не интересуют. Но для справки - используем тег CSV (кнопка Table), а значения полей записи разделяем запятыми. И используем кнопку Просмотр, чтобы убедиться, что получилось как нужно.
...
Рейтинг: 0 / 0
Как сделать join двух больших таблиц?
    #39521271
wissem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaДанные - не интересуют.
А что необходимо?
...
Рейтинг: 0 / 0
Как сделать join двух больших таблиц?
    #39521282
wissem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
первая таблица
+---------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+---------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| prices_in_usd | CREATE TABLE `prices_in_usd` (
`mdlnumber` varchar(12) NOT NULL,
`sub_code` varchar(32) NOT NULL,
`supplier_name` varchar(32) NOT NULL,
`weight` varchar(2) NOT NULL,
`price` decimal(32,2) NOT NULL,
`currency` varchar(3) NOT NULL,
`usdprice` decimal(32,2) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------

вторая таблица.

+-----------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-----------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| f_numbers | CREATE TABLE `f_numbers` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`f_number` varchar(32) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=69867 DEFAULT CHARSET=utf8 |
+-----------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
...
Рейтинг: 0 / 0
Как сделать join двух больших таблиц?
    #39521317
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь еще укажите поля, по которым устанавливается соответствие...
...
Рейтинг: 0 / 0
Как сделать join двух больших таблиц?
    #39521393
wissem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
t1.sub_code = t2.f_number
...
Рейтинг: 0 / 0
Как сделать join двух больших таблиц?
    #39521396
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну собственно если создать по этим полям индексы
Код: sql
1.
2.
CREATE INDEX idx_sub_code ON prices_in_usd (sub_code);
CREATE /* UNIQUE */ INDEX idx_f_number ON f_numbers (f_number);


то запрос просто-таки полетит... конечно, что это строковое поле - плохо, но не помеха.
В общем, не вижу пока ни противнопоказаний к использованию JOIN (хотя его по-любому использовать придётся, даже если делать это неявно).
...
Рейтинг: 0 / 0
Как сделать join двух больших таблиц?
    #39521428
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wissem,

А какой смысл во второй таблице, если на выход JOIN-а пойдет содержимое, равное полю t1.sub_code, а других значащих полей кроме t2.f_number там нет?
...
Рейтинг: 0 / 0
Как сделать join двух больших таблиц?
    #39521487
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftкакой смысл во второй таблицеВозможно, в эту таблицу вносятся значения для фильтрации - запихнуть 65к значений в текст запроса литерально может оказаться затруднительно...
...
Рейтинг: 0 / 0
Как сделать join двух больших таблиц?
    #39521507
wissem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Совершенно верно, для фильтрации. Нам из первой таблицы нужны только те записи, где sub_code равен f_number из второй, что сильно сократит первую таблицу. Огромное спасибо за подсказки, через часок попробую и отпишусь.
...
Рейтинг: 0 / 0
Как сделать join двух больших таблиц?
    #39522807
wissem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, огромное спасибо! вы мне очень помогли :)
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как сделать join двух больших таблиц?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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