상세 컨텐츠

본문 제목

2025.01.07 화요일 꺅!

Data School

by 넨! 2025. 1. 7. 15:55

본문

많이 자서 기분 조아요

 

use my_database;
create table BTreeExample(
	id INT auto_increment primary key, -- 각 데이터의 고유 ID
    value INT NOT NULL, -- 데이터 값
    INDEX (value) -- B-tree 인덱스 생성
);

-- 초기 값을 삽입
insert into BTreeExample (value) values (10), (20);
-- 값 삽입 (예, 30, 분할 발생)
insert into BTreeExample (value) values (30);
-- 값 삽입 (예, 40, 50, 추가 분할 발생)
insert into BTreeExample (value) values (40), (50);
-- 값 삽입 (ex. 25)
insert into BTreeExample (value) values (25);
-- 데이터 확인
select * from BTreeExample order by value;

-- 성적 검색
select * from BTreeExample where value between 20 and 40;
use my_database;
create table BPlusTreeExample(
	id INT auto_increment primary key, -- 각 데이터의 고유 ID
    value INT NOT NULL, -- 데이터 값
    data varchar(100), -- 실제 데이터
    INDEX (value) -- B+Tree 인덱스 생성
);
-- 데이터 삽입
insert into BPlusTreeExample (value, data) values (10, 'Data A');
insert into BPlusTreeExample (value, data) values (20, 'Data B');
insert into BPlusTreeExample (value, data) values (30, 'Data C');
insert into BPlusTreeExample (value, data) values (40, 'Data D');
insert into BPlusTreeExample (value, data) values (50, 'Data E');

-- 데이터 검색
select * from BplusTreeExample where value=30;
-- B+Tree에 연결되어 있어 범위 검색이 빠름.
select * from BplusTreeExample where value between 20 and 40;
use my_database;

create table NoIndexTable(
	id INT auto_increment primary key,
    value int not null,
    data VARCHAR(100)
);

-- indedTable 생성 (B+Tree 인덱스 있음)
create table IndexedTable(
	id int auto_increment primary key,
    value int not null,
    data varchar(100),
    Index idx_value(value) -- B+Tree 인덱스 생성
);

-- 특정 값(678282)에 집중된 데이터 1,000,000개 삽입
Insert into NoIndexTable(value, data)
select FLOOR(Rand() * 100000), concat('Data_', FLOOR(RAND()*100000))
from dual
LIMIT 1000000;
use my_database;

create table NoIndexTable(
	id INT auto_increment primary key,
    value int not null,
    data VARCHAR(100)
);

-- indedTable 생성 (B+Tree 인덱스 있음)
create table IndexedTable(
	id int auto_increment primary key,
    value int not null,
    data varchar(100),
    Index idx_value(value) -- B+Tree 인덱스 생성
);

-- 특정 값(678282)에 집중된 데이터 1,000,000개 삽입
Insert into NoIndexTable(value, data)
select FLOOR(Rand() * 100000), concat('Data_', FLOOR(RAND()*100000))
from dual
LIMIT 1000000;

-- 특정 값(678282)에 집중된 데이터 1,000,000개 삽입
Insert into IndexedTable(value, data)
select FLOOR(Rand() * 1000000), concat('Data_', FLOOR(RAND()*1000000))
from dual
LIMIT 1000000;

-- Noindextable의 분포 확인
select value, count(*) as occurrences
from NoIndexTable
group by value
order by occurrences desc
LIMIT 10;

-- Noindextable의 분포 확인
select value, count(*) as occurrences
from IndexedTable
group by value
order by occurrences desc
LIMIT 10;
use my_database;

create table NoIndexTable(
	id INT auto_increment primary key,
    value int not null,
    data VARCHAR(100)
);

-- indedTable 생성 (B+Tree 인덱스 있음)
create table IndexedTable(
	id int auto_increment primary key,
    value int not null,
    data varchar(100),
    Index idx_value(value) -- B+Tree 인덱스 생성
);

-- 특정 값(678282)에 집중된 데이터 1,000,000개 삽입
Insert into NoIndexTable(value, data)
select FLOOR(Rand() * 100000), concat('Data_', FLOOR(RAND()*100000))
from dual
LIMIT 1000000;

-- 특정 값(678282)에 집중된 데이터 1,000,000개 삽입
Insert into IndexedTable(value, data)
select FLOOR(Rand() * 1000000), concat('Data_', FLOOR(RAND()*1000000))
from dual
LIMIT 1000000;

-- Noindextable의 분포 확인
select value, count(*) as occurrences
from NoIndexTable
group by value
order by occurrences desc
LIMIT 10;

-- Noindextable의 분포 확인
select value, count(*) as occurrences
from IndexedTable
group by value
order by occurrences desc
LIMIT 10;


-- NoIndexTable에서 특정 값 검색
select * from NoIndexTable where value=678282;

select * from IndexedTable where value=678282;

-- 실행 시간 확인
show profiles;

슬라이싱: 변수의 일정 부분에 접근하여 잘라옴

변수[시작:끝:간격]

 

변수는 메모리 주소를 가지고 있고, 변수에 들어가는 값을 메모리 주소에 할당됨.

할당연산자(Assignment) = 변수 = 연산/조건/함수

할당 연산자 우측을 연산한 후, 그 결과를 좌측에 있는 변수에 할당(저장)

 

시작점을 안정하는 경우 => [:n]

 

 

 

'Data School' 카테고리의 다른 글

2025.01.13...  (0) 2025.01.13
2025.01.10 TGIF~  (0) 2025.01.10
2025.01.06 월 요 일...........  (0) 2025.01.07
2025.01.03 금요일!!!!4일차  (1) 2025.01.03
25.01.02 목요일 3회차........................  (0) 2025.01.03

관련글 더보기