이 선택 쿼리는 완료하는 데 약 20 초가 걸립니다.선택 20 초가 걸립니다. @ 30 분 동안 계속 삭제됩니다.
select Count(*)
from products as bad_rows
inner join (
select pid, MAX(last_updated_date) as maxdate
from products
group by pid
having count(*) > 1
) as good_rows on good_rows.pid= bad_rows.pid
and good_rows.maxdate <> bad_rows.last_updated_date
where bad_rows.available = 0
30 분 후에도 삭제가 실행 중입니다.
delete bad_rows
from products as bad_rows
inner join (
select pid, MAX(last_updated_date) as maxdate
from products
group by pid
having count(*) > 1
) as good_rows on good_rows.pid= bad_rows.pid
and good_rows.maxdate <> bad_rows.last_updated_date
where bad_rows.available = 0
왜? 다음과 같이
이 선택에 대한 설명
은 다음과 같습니다 : 다음과 같이
표 스키마는
+----+-------------+------------+------+---------------+------+---------+------+-------+--------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+------------+------+---------------+------+---------+------+-------+--------------------------------+
| 1 | PRIMARY | <derived2> | ALL | NULL | NULL | NULL | NULL | 6253 | |
| 1 | PRIMARY | bad_rows | ALL | NULL | NULL | NULL | NULL | 34603 | Using where; Using join buffer |
| 2 | DERIVED | products | ALL | NULL | NULL | NULL | NULL | 34603 | Using temporary; Using filesort|
+----+-------------+------------+------+---------------+------+---------+------+-------+--------------------------------
'EXPLAIN' 플랜은 귀하의 검색어에 대해 어떻게 생겼습니까? 행이 몇 개입니까? – doublesharp
테이블에 따라 몇 개의 인덱스 또는 기능이 있습니까? 색인을 관리하는 오버 헤드로 인해 색인이 존재하면 삭제 작업이 오래 걸립니다. 또는 기능 기반 인덱스 같은 기능 ... http://stackoverflow.com/questions/10595037/is-it-possible-to-have-function-based-index-in-mysql – xQbert
33000 rows. 및 1 인덱스 (id). 'explain '을 시도하면 –