나는 MySQL 사용자였습니다. 이제 SQL Server로 마이그레이션 중입니다. 그러나 나는 문제가있다. 나는 테이블에있는 인덱스의 종류를 구체화 할 방법을 찾을 수 없다. MySQL에서는 BTree 인덱스 또는 해시 인덱스를 쉽게 생성 할 수 있습니다. 여기서 어떻게 할 수 있습니까?SQL 서버 인덱스
주요 문제는 두 개의 테이블이 있다는 것입니다. 그 중 하나 ("게시물"이라는)는 "id"에 대한 기본 키 제약 조건이있는 다른 키 ("사용자"라고 함)에 대한 외래 키를 가지고 있습니다. 게시물 삽입을위한 자바 프로그램에서이 게시물의 사용자가 삽입되었는지 아닌지를 확인해야합니다. 삽입하지 않으면 삽입하십시오 (모든 사용자를 먼저 삽입 할 수 없습니다!).
이 코드는 MySQL에서 매 10 초마다 약 1000 개의 게시물을 삽입했습니다. 그러나 SQL Server에서는 검색 부분이 너무 많은 시간이 걸리고 1000 개의 게시물이 1 분 이상 걸립니다.
이 느린 SQL 쿼리입니다 :
CREATE TABLE [dbo].[users](
[id] [varchar](50) NOT NULL,
[type] [char](1) NULL,
[name] [nvarchar](150) NULL,
[reserved] [char](8) NULL,
[description] [nvarchar](4000) NULL,
[text] [ntext] NULL,
CONSTRAINT [PK__users__3213E83F00551192] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
문제가 무엇 :
select * from users u where u.id = "UserName"
이 사용자 테이블 인?
감사합니다.
당신은 당신이 최적화 된 SQL 문을 포함 할 수 있습니다? – JohnFx
질문에 포함 시켰습니다. This is : select * from users u where u.id = "UserName" – Shayan
사용자 테이블이 거대한데도 (user.id가 PK라고 가정하고) 너무 오래 걸릴 수는 없다. BTW, 만약 당신이 필요한 모든 사용자가 있는지 확인하는 것입니다, 당신은 테이블에서 전체 레코드를 검색 할 필요가 없습니다 (단지'SELECT id ...'또는'SELECT 1 ..'로 충분합니다) – a1ex07