이 쿼리는 MyISAM 테이블 반대 영원히 복용 : 나는 계산 합격을하지 못한다면, 지금mysql을 : 쿼리가 어떤 결과
SELECT * FROM table
WHERE link_id = 1 and counted = 1
은 정말 빨리 가져옵니다. 내가 그것에 합격하면 영원히 걸립니다. 그것은 큰 테이블이지만, 빈 테이블을 보여주기보다는 막혀 있어야하는 이유를 알지 못합니다.
아이디어가 있으십니까?
이 쿼리는 MyISAM 테이블 반대 영원히 복용 : 나는 계산 합격을하지 못한다면, 지금mysql을 : 쿼리가 어떤 결과
SELECT * FROM table
WHERE link_id = 1 and counted = 1
은 정말 빨리 가져옵니다. 내가 그것에 합격하면 영원히 걸립니다. 그것은 큰 테이블이지만, 빈 테이블을 보여주기보다는 막혀 있어야하는 이유를 알지 못합니다.
아이디어가 있으십니까?
각 행마다 counted=1
을 필터링해야하기 때문입니다. 색인이 link_id
에 설정되어 있습니까? 그렇다면 counted
을 설정하면됩니다.
하지만 어쨌든 많은 행을 반복 할 필요가 없습니까? (사후 쿼리 작업이 없습니다.) –
테이블을 실행하여 적절한 색인이 있는지 확인하십시오. 아마도 계수에는 색인이 없을 것입니까?
EXPLAIN SELECT * FROM table WHERE link_id = 1 and counted = 1
이것은 내가 얻는 것입니다. id : 1, select type : SIMPLE, 테이블 : \t type : ref, possible_keys : IX_2, IX_1, IX_3, key : IX_1, key_len : 4 , 심판 : const, 행 : 33333, 추가 : using where – luqita
내 생각에 단순히 색인이 누락되었습니다. 이 시도 :
SHOW INDEXES FROM <your table name>
당신이 column_name
분야에서 counted
를 볼 수 있나요?
CREATE INDEX <nifty index name> ON <your table name> (counted);
나는 다음 (미가 here을 설명하는) EXPLAIN
에 보일 것이다
하지 않으면, 당신은 아마 싶습니다. (내 경험으로 대부분의 경우 질의가 느린 경우 문제가 단순히 누락 된 색인 일 뿐이므로 설명하는 것이 좋습니다.)
(link_id, 계산 됨)에 대한 색인은 해당 쿼리를 빠르게 만듭니다.
색인을 생성 한 열은 무엇입니까? –
(있는 경우) 어떤 인덱스가'table'에 있습니까? –
테이블에 대한 create 문을 게시하십시오. – Poodlehat