< /p>
이렇게
< /p>
테이블 구조는 다음과 같습니다:
CREATE TABLE `lmx_app_category`(
`id` int(11) NOT NULL DEFAULT '0' COMMENT '범주 번호',
`pid`tinyint(4) NOT NULL DEFAULT '1' COMMENT '분류 유형(현재 2:1:어플리케이션, 2:게임)',
`name` varchar(50) NOT NULL COMMENT '범주 이름',
기본 키(`cat_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='애플리케이션 분류 테이블';
테이블 생성 `lmx_apps`(
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '앱 번호',
`cat_id` int(11) NOT NULL DEFAULT '0' COMMENT '범주 번호',
`name` varchar(100) NOT NULL COMMENT '앱 이름',
`연도` char(5) NOT NULL DEFAULT '0' COMMENT '연도',
`down_count` bigint(20) NOT NULL DEFAULT '0' COMMENT '다운로드',
`hit_count` bigint(20) DEFAULT '0' COMMENT '검색량',
기본 키(`id`),
) 엔진=InnoDB AUTO_INCREMENT=1 기본 CHARSET=utf8;
이제 두 개의 공동 색인을 만들었습니다:
< /p>
그런데 이 두 색인에는 몇 가지 문제가 있습니다. 모두 검색을 클릭하면 정렬이 색인화되지 않습니다. 카테고리 검색 시 색인화하지 않고 모두 선택하는 문제를 해결하려면 어떻게 해야 합니까?
인용구 >인덱싱을 위한 SQL은 다음과 같습니다.
<코드> -- 설명 SELECT a.id,a.cat_id,a.`name`,a.down_count,b.`name` FROM `lmx_apps` a 내부 조인 `lmx_app_category` `b` ON `a`.`cat_id`=`b`.`id` 어디 a.cat_id = 103 a.down_count DESC로 주문 제한 10,20인덱싱을 하지 않은 SQL은 다음과 같습니다
SELECT a.id,a.cat_id,a.`name`,a.down_count,b.`name` FROM `lmx_apps` a 내부 조인 `lmx_app_category` `b` ON `a`.`cat_id`=`b`.`id` -- 어디 -- a.cat_id IN (lmx_app_category WHERE orgame = 1에서 cat_id 선택) -- cat_id 조건이 없거나 조건이 다음과 같은 경우 a.down_count DESC로 주문 제한 10,20
이제 또 다른 계획이 생각나는데, 바로
애플리케이션 테이블의 cat_id 필드와 cat_id가 생성한 인덱스를 삭제하세요
분류 테이블(lmx_app_category)과 애플리케이션 테이블(lmx_apps) 간의 관계 테이블을 생성합니다.
필드는 id, app_id, cat_id입니다
이 관련 테이블에 인덱스를 생성하세요. 이 솔루션이 어떤 것인지 모르겠습니다