SELECT COUNT(s.fid) AS tcount, SUM(t.size) AS tsize, s.uid
FROM xbt_files_users AS s INNER JOIN torrents AS t
ON s.fid = t.id
WHERE s.active = 1 AND s.mtime > '.$time.' AND s.remaining = 0 AND t.size >= 52428800
GROUP BY s.uid
У меня есть некоторые проблемы с этим запросом, в занят, несколько раз занимает более 20 секунд ... xbt_files_users оказывает индекс для: ARM (активный, остальные, время изменения), UID, (FID/UID - уникальный) потоки оказывает индекс для размера, начального ID It`s с помощью:MYSQL Выберите со счетом, сумма, внутреннее соединение и группа по
Используя где; Использование временных; Использование FileSort для xbt_files_users
и
Использование где торрентов
Это ли способ улучшить этот запрос?
Чтобы помочь вам лучше, не могли бы вы показать нам, что ваш шоу создает таблицу? то есть. 'SHOW CREATE TABLE xbt_files_users;' и 'SHOW CREATE TABLE торренты ', а также план выполнения запроса' EXPLAIN EXTENDED SELECT .. ваш запрос идет здесь ... ', как правило, создавая индекс на xbt_files_users (fid, active, оставшееся, mtime), а другое на торрентах (id, size) поможет вам предположить, что типы id и fid идентичны – Jaylen
Согласитесь с Mike ... ваша таблица торрентов должна быть проиндексирована (ID, SIZE) , тогда критерии размера ... сначала не начинаются с размера, а затем идентификатора. – DRapp