본문 바로가기
728x90
반응형

DataBase13

WHERE INDEXを使用してみましょう 数値カラムに文字型の数値を入力すると、 通常、インデックスを使用することができる。 ex)select* from Employee where EmpNo= '90005' EmployeeテーブルのEmpNo列が数値型の場合、 オプティマイザ「90005」文字型を数値型に自動的に変えてくれ 通常Indexを使用するようにしてくれる。 しかし、 文字型のカラムの数を数値タイプで SELECT時Full Scanが起こる。 ex)select* from Employee DeptNo=300 DeptNoカラムが文字型の場合、DeptNoカラムが数値型で 変換されFull Scan発生 2020. 11. 1.
인덱스 Select 시 조건절 데이터타입 숫자형 컬럼에 문자형 숫자를 입력하면 정상적으로 인덱스를 사용할 수 있다. ex) select * from Employee where EmpNo = '90005' Employee 테이블의 EmpNo 컬럼이 숫자 타입일 경우 옵티마이저가 '90005' 문자형을 숫자형으로 자동으로 바꿔주어 정상적으로 Index 를 사용하게 해준다. 하지만 문자형 컬럼에 있는 숫자를 숫자형 타입으로 SELECT 시 Full Scan이 일어난다. ex) select * from Employee DeptNo = 300 DeptNo 컬럼이 문자형일 경우 DeptNo 컬럼이 숫자형으로 변환되어 Full Scan 발생 2020. 11. 1.
인덱스 사용을 위한 가공된 컬럼 튜닝 방안 컬럼이 가동되면 인덱스 사용이 불가능해진다. 컬럼을 가공하지 않고 아래와 같이 조건절을 작성한다. 1. select * from Employee where substr(name,1,3) = 'LEE' ->튜닝 select * from Employee where name like 'LEE%' 2. select * from Employee where MonthPay * 12 = 50000000 ->튜닝 select * from Employee where MonthPay = 50000000 / 12 3. select * from Order where to_char(OrderDay,'yyyymmdd') = dt ->튜닝 select * from Order where OrderDay >= to_char(dt,'y.. 2020. 11. 1.
BTree 인덱스 튜닝 B*Tree 인덱스를 사용하려면 인덱스의 선두 컬럼이 조건절에 적용되어야 한다. 그렇지 않을 경우 옵티마이저는 인덱스 전체를 스캔하거나 테이블 전체를 스캔하게 된다. 선두 컬럼이 조건절에 적용되더라도 인덱스 사용을 못하는 경우가 있는데 아래와 같다. 1. select * from Employee where substr(name, 1,3) = 'LEE' 2. select * from Employee where name 'LEE' 3. select * from Employee where name is not null 위 경우 정상적인 인덱스 범위 스캔이 불가능하지만 인덱스 사용자체가 불가능한건 아니라 Index Full Scan은 가능하다. SQL Server 서버는 is null 검색 시에도 인덱스를 사용.. 2020. 11. 1.
728x90
반응형