MySQL 5.5 и 5.7 довольно сильно отличаются друг от друга, и последний имеет лучший оптимизатор, поэтому неудивительно, что планы объяснения отличаются.
Вам лучше предоставить выходные данные SHOW CREATE TABLE property;
и SHOW CREATE TABLE property_inspection;
, так как они будут показывать индексы, которые есть в ваших таблицах.
Ваш подзапрос является проблемой. - Сервер пытается обработать строки 1.6M без индекса и сгруппировать все. - Having
довольно дорогая операция, поэтому вам лучше ее избегать, особенно в подзапросах. - Группировка в этом случае плохая идея. Вам не нужно агрегирование / подсчет. Вам нужно проверить, существует ли просто статус «Дата разрешения»
На основании предоставленной информации я бы порекомендовал: - Изменить таблицу property_inspection
, чтобы уменьшить длину столбца status
. - Добавить индекс по столбцу. Если возможно, используйте индекс покрытия (APN
, property_case_detail_id
, status
) (в этом порядке столбцов). - Измените запрос на что-то вроде этого:
SELECT
SQL_CALC_FOUND_ROWS
DISTINCT p.parcel_number,
...
p.id
FROM
property_inspection AS `pi1`
INNER JOIN property AS p ON (
p.parcel_number = `pi1`.APN
)
LEFT JOIN (
SELECT
`pi2`.property_case_detail_id
, `pi2`. APN
FROM
property_inspection AS `pi2`
WHERE
`status` = 'Resolved Date'
) AS exclude ON (
exclude.APN = `pi1`.APN
AND exclude.property_case_detail_id = `pi1`.property_case_detail_id
)
WHERE
exclude.APN IS NULL
LIMIT
0, 1000;
Я видел, как это происходило в Delphi 7, когда форма, унаследованная от другой формы из другого проекта, открывалась в Delphi сама по себе без открытого проекта, которому она принадлежит.
If someone has opened the project with different version of Delphi (or changed the default settings), he may save the forms in different format.
Это иногда случается, когда IDE сбивается с пути.
Обычно он запускается после того, как вы получили нарушение прав доступа внутри IDE Delphi 7.
Иногда также один или несколько буферов редактора Delphi внутри IDE становятся доступными только для чтения (в то время как файлы на диске все еще доступны для чтения / записи).
Такое поведение происходит гораздо реже, чем в Delphi 5 или 6 , но иногда это происходит в Delphi 7.
Возможно, вас заинтересует использование Beyond Compare вместо встроенного инструмента слияния TortoiseSVN. Beyond Compare написан на Delphi и изначально знает, как читать двоичные DFM. Это означает, что тогда становится меньше проблемы (или даже не проблема), хранятся ли ваши DFM в Subversion в двоичном или текстовом формате. Beyond Compare V3 также выполняет трехстороннее слияние, что позволяет очень легко объединить несколько коммитов и т. Д. Даже игнорируя возможность различать двоичные DFM, он по-прежнему является гораздо лучшим средством просмотра различий, чем встроенные инструменты TortoiseSVN. Я очень рекомендую его, и это очень недорого (я не имею никакого отношения к Scooter Software, кроме как очень довольный клиент).
Мы наверняка сталкивались с этим. Мы используем исключительно D7.
Никогда не разбирались в этом, так как это случается всего полдюжины раз в год или около того, и хотя это неприятность, ее довольно легко исправить.
Мне было интересно узнать ответ Ларса, и я непременно посмотрю, возможно ли это в следующий раз, когда это произойдет.
У нас тоже время от времени возникает эта проблема, и, похоже, она связана с просмотром исходного кода DFM (Alt-F12) и последующим визуальным Безопасная работа с источником (например, регистрация).