나는 10 억 개의 매우 큰 테이블을 가지고 있습니다.PHP - SQL을 최적화 매우 큰 테이블에 대한 복수 행을 선택
foreach($idArray as $id){
'SELECT DIE_X, DIE_Y, LOG_INDEX, TREND_ELEMENT, TREND_DATA FROM trend_data_level_5 WHERE TREND_INDEX =' $id;
$result = mysql_query($query);
}
이 방법은 내 테이블이 커지면 길어질수록 오래 걸립니다. 내 SQL 데이터베이스에 innoDB 엔진을 사용하고 있습니다.
나는 타이머를 돌렸다. 위의 루프는 ~ 15 mil의 테이블 크기에 대해 ~ 17 초을 취했다. 얼마나 많은 시간이 걸릴지 상상해보십시오!
이 시간을 현저하게 줄일 수 있습니까? 그렇다면 최상의 접근 방식은 무엇입니까?
편집 : 여기에 테이블이 어떻게 표시되는지를 보여줍니다
같은------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table
|
+--------------------+--------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------+
| trend_data_level_5 | CREATE TABLE trend_data_level_5 (
LOG_INDEX int(5) DEFAULT NULL,
DIE_X int(3) DEFAULT NULL,
DIE_Y int(3) DEFAULT NULL,
TREND_INDEX int(10) DEFAULT NULL,
TREND_ELEMENT varchar(3) DEFAULT NULL,
TREND_DATA int(5) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+--------------------+--------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------+
'ID'는 테이블의 키입니까? 또는 적어도 색인을 생성 했는가? 'ID' (int, varchar 등)의 크기는 얼마입니까? 색인이 생성되었다고 가정하면 전체 색인을로드 할만큼 메모리가 충분합니까? –
게시물을 편집하고 'SHOW CREATE TABLE table_1'의 결과를 추가하여 열, 데이터 유형 및 색인을 볼 수 있습니다. –
좋아요, 적절한 수정을했습니다. 테이블 구조를 확인하십시오 –