반응형

MySQL 7

[Database] MySQL 8.0 내장함수를 이용하여 데이터를 편리하게 추출하기

타입 변환 함수 CAST('_' AS SIGNED INTEGER) : 부호 있는 정수형으로 변환 문자열 함수 CHAR(ASCII 코드) : 매개변수로 받은 ASCII 코드에 해당하는 문자를 반환 VARCHAR() : 가변 문자열 INSERT(문자열, 시작 위치, 길이, 삽입할 문자열) : 문자열의 특정 위치에 새로운 문자열을 삽입하는 함수 REPLACE(문자열, 찾을 문자열, 바꿀 문자열) : 문자열에서 특정 문자열을 찾아 새로운 문자열로 바꾸는 함수 SUBSTRING(문자열, 시작 위치, 길이) : 문자열의 일부를 추출하는 함수 수학 함수 CEIL(수) : 주어진 수보다 크거나 같은 가장 작은 정수를 반환 FLOOR(수) : 주어진 수보다 작거나 같은 가장 큰 정수를 반환 ROUND(수) : 주어진 수..

Study/Database 2023.04.13

[Database] MySQL 데이터베이스의 데이터 사전을 information_schema로 확인하기

메타데이터. 데이터베이스에 저장된 데이터의 구조, 형식, 관계 등에 대한 정보를 저장하는 데이터를 뜻합니다. 데이터베이스의 메타데이터는 데이터베이스 자체를 관리하기 위해 사용되며, 일반적으로 시스템 카탈로그(System Catalog) 또는 데이터 사전(Data Dictionary)이라고도 불립니다. 이것을 확인하기 위해서는 다음과 같은 쿼리를 작성합니다. SELECT * FROM information_schema.TABLES 데이터베이스 스키마의 구조 및 내용을 더욱 자세히 파악할 수 있습니다. 데이터베이스 안의 테이블 정보 말고도 다음과 같은 정보들을 확인할 수 있습니다. COLUMNS: 데이터베이스 내의 모든 테이블 컬럼에 대한 정보를 포함합니다. STATISTICS: 인덱스와 관련된 통계 정보를 ..

Study/Database 2023.04.13

[Database] MySQL의 뷰 테이블로 SQL 성능을 향상 시키기

뷰 테이블은 기존의 테이블에서 선택적으로 컬럼을 추출하거나, 여러 개의 테이블을 조인한 결과에서 데이터를 추출하여 가상의 테이블을 만든 것입니다. 만약 사용자가 원하는 데이터를 만들기 위해서 여러 개의 테이블을 JOIN 해야 하는데, 해당 테이블이 수정 삭제되는 경우가 없는 경우, 뷰 테이블을 사용하여 JOIN된 결과를 미리 만들어 두는 것이 가능합니다. 그러면 쿼리가 어떻게 되겠습니까? 원래라면 SELECT * FROM A LEFT JOIN B ON A.id = B.id LEFT JOIN ... 이처럼 계속되는 조인과 조건들을 SELECT * FROM VIEW_TABLE 로 쿼리를 끝낼 수가 있다는 것이지요. 이처럼 뷰 테이블을 사용하면 다음과 같은 장점이 있습니다. 1. 데이터 보안 강화 뷰 테이블을..

정보처리기사 2023.04.13

[Database] MySQL의 인덱스로 검색 요청을 빠르게 수행하는 쿼리 최적화

인덱스는 테이블의 검색 속도를 향상시키기 위해 사용되는 데이터 구조입니다. 테이블의 열(Column)에 대한 값을 미리 정렬하여 저장하는 것으로, 검색 시에 해당 열을 순차적으로 검색하는 것이 아니라 인덱스를 이용하여 빠르게 데이터를 찾아낼 수 있습니다. 일반적으로 WHERE 절에 사용되는 열에 대해서 생성됩니다. 만약 WHERE 절에 사용되는 열에 인덱스가 없다면, MySQL은 모든 레코드를 검색해야 하므로 성능이 저하될 수 있습니다. 생성 방법으로는 테이블 생성 시에도 생성할 수 있고, ALTER TABLE 문을 사용하여 생성할 수도 있습니다. 다만, 인덱스를 생성하면 테이블의 크기가 커지게 되므로, 인덱스를 생성할 때에는 신중하게 결정해야 하고 INSERT, UPDATE, DELETE와 같은 데이터..

정보처리기사 2023.04.13

[Database] MySQL 실행계획으로 쿼리 최적화를 위한 힌트를 확인하자

이전에 옵티마이저에 대해서 알아보았습니다. https://myallinone.tistory.com/entry/MySQL%EC%9D%98-%EB%91%90%EB%87%8C-%EC%98%B5%ED%8B%B0%EB%A7%88%EC%9D%B4%EC%A0%80optimizer MySQL의 두뇌, 옵티마이저(optimizer) MySQL의 옵티마이저. MySQL 데이터베이스 시스템에서 쿼리를 처리할 때, 최적의 실행 계획을 결정하는 역할을 담당하는 컴포넌트입니다. 쿼리 실행 계획은 데이터베이스에서 쿼리를 처리하는 방법 myallinone.tistory.com 이 옵티마이저는 사용자의 질의를 받고, 그 질의를 최적의 수단을 통해 데이터를 가져와서 우리에게 돌려줍니다. 그 수단이 '쿼리 실행 계획'입니다. MySQL에..

Study/Database 2023.04.13

[Database] MySQL의 두뇌, 옵티마이저(optimizer)

MySQL 데이터베이스 시스템에서 쿼리를 처리할 때, 최적의 실행 계획을 결정하는 역할을 담당하는 컴포넌트입니다. 쿼리 실행 계획은 데이터베이스에서 쿼리를 처리하는 방법을 결정하는 것으로, 어떤 인덱스를 사용하거나 어떤 테이블을 먼저 조인할지 등을 결정합니다. 이때 옵티마이저는 쿼리를 처리하는데 가장 효율적인 방법을 찾기 위해 여러 실행 계획을 비교하고 분석하여 최적의 실행 계획을 선택합니다. MySQL 옵티마이저는 일반적으로 쿼리를 처리할 때 적용되는 규칙 및 통계 정보를 기반으로 실행 계획을 결정합니다. 이를 통해 쿼리 처리 속도를 최적화할 수 있습니다. 또한 MySQL 옵티마이저는 다양한 옵션을 설정하여 실행 계획을 조정할 수 있습니다.

정보처리기사 2023.04.13

[Database] SQL을 최적화하려면 이렇게 해야 한다.

다양한 SQL 성능 향상 방법 중 일반적으로 사용되는 몇 가지 방법을 살펴보겠습니다. 1. 인덱스를 적절하게 사용하기 인덱스를 적절히 사용하면 쿼리의 실행 속도를 향상시킬 수 있습니다. 자주 검색되는 컬럼명에 인덱스를 생성하거나, WHERE 절에 자주 사용되는 조건에 인덱스를 생성하는 것이 좋습니다. 이때 해당 컬럼의 열은 중복되지 않는 것이 더욱 성능에 좋습니다. 2. 쿼리의 비용 계산하기 실행 계획을 확인하여 쿼리의 비용을 계산하고, 비용이 큰 작업을 최적화하는 것이 좋습니다. 비용이 큰 작업은 대개 테이블을 스캔하거나, 복잡한 조인 등이 포함된 쿼리입니다. 3. 쿼리의 조건절 최적화하기 조건절을 최적화하여 실행 속도를 향상시킬 수 있습니다. 예를 들어, LIKE 절을 사용할 때는 와일드카드(%)를 ..

Study/Database 2023.04.13
반응형