본문 바로가기
반응형

DATABASE18

MySQL ogr2ogr(공간정보 저장에 대해서) MySQL에서 지원하는 Geometry(Vector)를 사용하여 지도의 정보를 저장 할 수 있다. ogr2ogr을 사용하면 .shp파일에 있는 공간에 대한 정보를 DB에 저장도 가능하고 다양한 방법으로 활용이 가능한듯 하다. 작업중인 프로젝트에서는 .shp파일에 저장된 지도 데이터를 DB에 저장을 해야 하고, 해당 데이터를 사용하여 경로 선택, 최단거리 계산 등 다양한 웹페이지, 서버에서의 동작 등을 해야한다. 1. 우분투에서 ogr2ogr 설치 - 설치 명령어 : apt-get install gdal-bin - 참고 사이트 : https://gdal.org/drivers/vector/mysql.html MySQL — GDAL documentation The MySQL driver does not sup.. 2021. 7. 28.
varchar타입에 order by를 써야하는 경우 varchar는 문자열을 받을때 쓰는것이므로 order by가 원하는대로 되지 않는것이 당연하다. 해결 방법은 해당 컬럼을 숫자로 변환해서 order by를 하는 것이다. 그럼 숫자로 변환을 하려면? 1. cast함수를 활용한 형변환 ex) order by cast(wr_5 as decimal( 3, 0)) desc deciaml을 쓸때 앞은 자릿수, 뒤에는 소수점 자릿수이다. 2. 해당 컬럼의 값에 숫자를 더하는 형식을 취해 숫자로 변경 ex) order by wr_5+0 desc 2021. 7. 20.
date, datetime 속도 이슈 정리(feat timestamp를 쓰도록...) 이전에 했던 프로젝트에서 datetime을 사용하고 where 절에서 "컬럼 >='2021-06-05' and '2021-06-06 2021. 6. 8.
mysql union과 union all의 차이 테이블이나 데이터를 합쳐야 하는 경우 UNION 또는 UNION ALL을 사용 한다. 정확하게는 mysql에서 UNION DISTINCT와 UNION ALL 두 종류로 나뉜다고 볼 수 있다. UNION이라고 쓰는게 UNION DISTINCT로 된다는 것이다.(글자가 생략되어 있다고 보면 된다.) DISTINCT는 일반적으로 쓰는 그대로 중복을 제거 해준다는 뜻이다. 그런데 여기서 문제점은 속도 저하, 그리고 무엇을 기준으로 DISTINCT를 해준다는 것인지 이다. 그리고 또 하나 확인 할 점! 중복 제거는 모든 컬럼을 기준으로 한다는 것. 상황에 따라서 사용이 있겠지만 아무래도 UNION DISTINCT를 많은 데이터가 있는곳에서 사용하기에는 음.... 정확하게 아직 데이터가 너무 많아 발생한 문제는 없.. 2021. 5. 31.
mysql 인덱스 확인, 추가, 삭제 인덱스란 속도에 매우 영향을 주는 중요한 녀석이다. DB쿼리를 만들고나면 where절에 들어가는 것들을 인덱스만 잘 걸어도 훨씬 빠르다. 정말로... 1. 인덱스 확인 show index from 'tablename' ex) show index from test_table 2. 인덱스 추가 alter table 'tablename' add index 'indexname' (column1, column2...) ex) alter table test_table add index test_idx (id,date) 3. 인덱스 삭제 alter table 'tablename' drop index 'indexname' ex) alter table test_table drop index test_idx 간단하게 위의.. 2021. 4. 21.
두개의 위도 경도 사이의 거리 계산하기 두개의 위도 경도가 있고 그 사이의 거리를 구해야하는 일이 발생하여 찾아보았다. 하버사인공식 하버사인 공식을 볼 수 있는 홈페이지 www.movable-type.co.uk/scripts/latlong.html 내용의 스크린샷은 아래와 같다. 하버사인공식 mysql 적용 예시 select ROUND(6371 * ACOS(COS(RADIANS(latitude2)) * COS(RADIANS(latitude1)) * COS(RADIANS(longitude1) - RADIANS(longitude2)) + SIN(RADIANS(latitude2)) * SIN(RADIANS(latitude1))), 1) AS distance from location having distance < 1 6371을 사용하면 km단위의 .. 2021. 3. 22.
728x90