Я новичок в базе данных, когда дело доходит даже до умеренно больших наборов данных.У меня есть база данных SQL (на самом деле несколько баз данных sql, база данных SQLite, Postgres и MySQL), каждая из которых содержит одинаковые данные , выгруженные из IMDB .Я хочу сравнить эти разные базы данных.Основная таблица, которую я хочу запросить, содержит около 15 миллионов строк.Я хочу запрос, который пересекает два фильма, сейчас мой запрос выглядит так:
SELECT * from acted_in INNER JOIN actors
ON acted_in.idactors = actors.idactors WHERE
(acted_in.idmovies = %d OR acted_in.idmovies = %d)
параметры - это случайно сгенерированные идентификаторы.Я хочу проверить относительную скорость работы баз данных, выполнив этот запрос несколько раз для случайно сгенерированных фильмов и посмотрев, сколько времени он занимает в среднем.Мой вопрос заключается в том, есть ли лучший способ сделать тот же запрос, я хочу присоединиться к тому, кто действовал во что с их информацией из любого из двух фильмов, так как это будет основной функциональностью для проекта, над которым я работаю, прямо сейчасскорость в настоящее время ужасна, средняя скорость для одного запроса составляет
sqlite: 7.160171360969543
postgres: 8.263306670188904
mysql: 13.27652293920517
Это среднее время на запрос (выборка занимает всего 100 запросов, но на данный момент она достаточно значительна).Так что я могу сделать лучше?Текущее время работы совершенно неприемлемо для любого практического использования.Я не думаю, что объединение занимает много времени, удаляя его, я получаю почти те же результаты, поэтому я считаю, что поиск - это то, что занимает много времени, так как я не набираю значительную скорость, когда я неприсоединяйтесь или ищите, используя условное ИЛИ.