Выбор строки с наибольшим значением столбца среди строк с таким же значением другого столбца - PullRequest
0 голосов
/ 12 октября 2011

На этот раз я спрошу о том, что что-то работает в целом, но когда данные огромны, они терпят неудачу.

Мой случай такой же в этом посте.

как запроситьстроки, которые имеют наибольшее значение столбца среди строк, имеющих одинаковое значение для одного из столбцов

Я использовал

SELECT `ID`, `PDBID`, `Chain`, `UniProtID`, `PDBASequence`, `pI`, `experiment`, `resolution`
FROM protein p 
WHERE `resolution`= (SELECT MAX(`resolution`)
                              FROM protein 
                              GROUP BY `PDBASequence`
                              HAVING `PDBASequence` = p.`PDBASequence`)

Я также пытался:

 SELECT `ID`, `PDBID`, `Chain`, `UniProtID`, `PDBASequence`, `pI`, `experiment`, `resolution`
    FROM protein p 
    WHERE `resolution`= (SELECT MAX(`resolution`)
                                  FROM protein 
                                  WHERE `PDBASequence` = p.`PDBASequence`)

Iдолжны группироваться по последовательностям в соответствии с PDBASequence.Но в то же время выбранный представитель должен иметь максимальное значение разрешения.

Я пробовал этот код на небольшом наборе.Работать без проблем.Однако, когда я попытался запустить его на реальной таблице, содержащей 80980 строк, выполнение занимает почти всегда.Кроме того, мой другой компьютер дает Mysql сервер исчезла ошибка из-за типа исполнения и размера кармана.Я исправил настройки в my.ini и снова запустил код.Ничего не изменилось.По-прежнему нет результата :( Что мне делать? Спасибо, я назначил индекс разрешения в таблице белков. Однако он ничего не изменил.

1 Ответ

0 голосов
/ 12 октября 2011

Посмотрите, лучше ли эта версия.

SELECT p.`ID`, p.`PDBID`, p.`Chain`, p.`UniProtID`, p.`PDBASequence`, p.`pI`, p.`experiment`, p.`resolution`
FROM protein p 
    INNER JOIN (SELECT PDBASequence, MAX(`resolution`) AS MaxResolution
                    FROM protein 
                    GROUP BY `PDBASequence`) q
        ON p.PDBASequence = q.PDBASequence
            AND p.resolution = q.MaxResolution
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...