본문 바로가기
백엔드/API

[API] 서비스 배포 전 SQL문 Index 작업

by eyoo 2022. 6. 30.

서비스를 배포하기 전에 빠른 처리속도를 위해 SQL에서 where문에 속한 테이블과 컬럼에 Index 처리해야한다.

 

먼저 select, update, delete를 모두 검색해서 where가 포함된 query를 찾는다.

 

검색기능을 사용하여 API를 작성한 파일이 들어있는 폴더에서 select 부터 delete까지 순서대로 검색하여 확인한다.

 

 

 

select 를 사용한 쿼리에서 where를 사용한 테이블을 찾고 그 컬럼에 인덱스 처리한다.

 

            query = '''select p.*, u.email, u.name, count(l.postingId) as likes
                        from posting p
                        join user u
                        on p.userId = u.id
                        left join likes l
                        on p.id = l.postingId
                        where p.userId = %s
                        group by p.id
                        limit '''+offset+''','''+limit+''';'''

 # posting 테이블의 userId를 인덱스 처리해야 한다.

 

 

foreign key를 설정해서 인덱스 처리했다.

 

 

 

where에 like가 포함된 query를 찾았다.

 

            query = '''select * 
                        from tag_name tn
                        join tag t
                        on tn.id = t.tagId
                        join posting p
                        on p.id = t.postingId
                        where tn.name like '%'''+keyword+'''%'
                        group by t.postingId
                        order by p.createdAt desc
                        limit '''+offset+''', '''+limit+''';'''

 

 

where 절에 like가 있으면 FULLTEXT로 처리한다.

 

 

 

delete에서 where를 사용한 query를 찾았다.

 

                query = '''delete from tag
                            where postingId = %s;'''

 

tagId와 postingId를 묶어서 인덱스 설정한다.

 

 

 

#유니크는 자동으로 이미 인덱스 처리가 되기 때문에 따로 설정할 필요가 없다.

 

 

 

 

 

댓글