2012-11-14 4 views
2

MYSQL Server 5.0을 사용하고 있으며 다음 문장의 SQL Server를 사용하려고하고 있으며 전혀 작동하지 않습니다. 제발 이것 또한 MySQL에 적용 할 수있는 방법이 있습니다. 고맙습니다.mysql에서 인덱스 생성이 작동하지 않습니다.

CREATE NONCLUSTERED INDEX [IX_Dave_General] ON [dbo].[Stock] 

    (
      [ArticleID] ASC, 
       [TranDate] DESC, 
      [TranCode] ASC 
    ) 
    INCLUDE ([Items], 
    [Price]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 

답변

6

원래 SQL Server 지수는 두 가지 기능을 사용했을 때와 혼합 정렬 방향 (ASCDESC 열) (이하 비 INCLUDE 키 열과) 인덱스를 덮는.

이들 중 어느 것도 MySQL으로 지원되지 않습니다.

색인이 필요한 경우 (예 : 3 개 열 모두에서 정확하게 일치하는 경우) @ Ray의 대답을 사용하십시오.

4

당신이 표는 '주식'이다이야 그리고 당신은 (은 articleID, TRANDATE, TranCode)와 복합 인덱스를 원하는 가정.

CREATE INDEX your_index_name ON Stock (ArticleID,TranDate, TranCode); 

myISAM 또는 InnoDb 스토리지 엔진의 경우 MySQL에서 다른 정보를 확인할 수 없습니다.

는 커버링 인덱스가 단지 선언에 추가 할 다른 필드를 포함하려면 :

CREATE INDEX your_index_name ON Stock (ArticleID,TranDate, TranCode, Items, Price); 

나는 '포함'명세서에되는 항목 및 가격 있으리라 믿고있어 주식 테이블의 일부입니다.

여기서 큰 희생은 삽입물과 디스크 공간에 커다란 커버 링 지수가 있다는 것입니다.

+1

이것은 'ASC/DESC'를 보존하지 않지만 실제로 색인을 생성합니다. – Quassnoi

+0

및 INCLUDE는 무엇입니까? 내 말은 내가 그걸로 해보려고했지만 그냥 할 수 없어. – Washu

+0

@ Quassnoi 맞아. 나는 당신이 MySQL에서 인덱스에 대한 통제 정도를 가지고 있다고 생각하지 않는다. – Ray

관련 문제