Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Ребят, помогите плз, кто с MySQL работает
на простых запросах показывает жуткие тормоза
не могу понять в чем дело
имеетя:
1) таблица список городов: cities (2 миллиона записей)
citynumber int(7) PRIMARY KEY
cityname varchar(200) INDEX
2) таблица альтернативные названия городов: cities_alternatenames (1.8 миллиона записей)
citynumber int(10) INDEX
alternate_name varchar(200) INDEX
например в таблице cities есть запись: 2925535 Frankfurt
а в таблице cities_alternatenames:
2925535 Fráncfort
2925535 Frankfurto
2925535 Франкфурт
пробую делать запросы:
q1)
SELECT *
FROM cities
WHERE
cityname = 'Frankfurt'
Query took: 0,0008sec (все путем)
----------------------------------------------------------
q2)
SELECT *
FROM cities
WHERE
citynumber in(2925535, 1234567, 2345678)
Query took: 0,0003sec (все путем)
----------------------------------------------------------
q3)
SELECT citynumber
FROM cities_alternatenames
WHERE alternate_name = 'Frankfurt'
Query took: 0,0008sec (все путем)
----------------------------------------------------------
q4)
SELECT *
FROM cities
WHERE
citynumber in(2925535, 1234567, 2345678)
or
cityname = 'Frankfurt'
Query took: 4sec (с чего бы так долго стало ??? это же q1+q2)
----------------------------------------------------------
q5)
SELECT *
FROM cities
WHERE
citynumber in(SELECT citynumber
FROM cities_alternatenames
WHERE alternate_name = 'Frankfurt'
)
or
cityname = 'Frankfurt'
Query took: 258sec (вапще задница однако !!!)
----------------------------------------------------------
Неактивен
q5 лучше делать JOIN-ом, так как подзапрос может быть неэффективен и выполняться каждый раз при сканировании основной таблицы - эту багу обещают пофиксить в MySQL 6.0.
Сделайте EXPLAIN q4, возможно он делает MERGE ключей.
попробуйте такой вариант
SELECT * FROM (SELECT *
FROM cities
WHERE
citynumber in(2925535, 1234567, 2345678) ) X
WHERE cityname = 'Frankfurt'
Неактивен
rgbeast, пасиб
q4 заменил OR на UNION
q5 JOIN + UNION
все летает
MySQL загадочная СУБД однако
Неактивен
Страниц: 1