Ускорение запроса SQL SELECT для таблицы с 6 миллионами строк - PullRequest
0 голосов
/ 07 января 2019

У меня есть таблица с одним столбцом и 6 миллионами строк. Каждая строка содержит строку, зашифрованную на PHP (около 32 символов в каждой).

У меня есть простой запрос SELECT, который проверяет ввод (если вставленный код (через форму HTML) существует в базе данных, вставьте его (в другую таблицу)).

SELECT 1 FROM codes WHERE code = $value

Работает хорошо, однако при 6 миллионах строк проверка занимает от 10 до 15 секунд. Есть ли какой-то универсальный подход к этому?

Ответы [ 3 ]

0 голосов
/ 07 января 2019

Если вы хотите узнать, существует ли что-то, рассмотрите возможность использования EXISTS:

SELECT 1
WHERE EXISTS 
(SELECT 1 FROM code WHERE code = $value)

Возвращается после того, как найдена 1 запись.

0 голосов
/ 07 января 2019

Индекс позаботится о проблеме. Но если вы хотите получить ответ менее 200 мс, я бы рекомендовал использовать кэш в памяти

0 голосов
/ 07 января 2019

Это должно быть быстрее, если у вас есть соответствующий индекс:

create index idx_codes_code on codes(code)

Если у вас есть индекс, проблема может быть в количестве возвращаемых строк. В этом случае вы можете ограничить результирующий набор одной строкой. Вы не указываете базу данных. Стандартный синтаксис:

SELECT 1
FROM codes
WHERE code = $value
FETCH FIRST 1 ROW ONLY;

В некоторых базах данных это обрабатывается с помощью SELECT TOP (1) или LIMIT 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...