MySQL 9

MySql 에서 두 테이블간의 데이터 복사 방법

[이슈] A_TABLE 라는 테이블의 특정한 조건에 해당되는 데이터를B_TABLE 라는 테이블로 옮기고 싶다. [방법]INSERT INTO B_TABLE (필드1, 필드2, 필드3, 필드4) SELECT 필드1, 필드2, 필드3, 필드4 FROM A_TABLE WHERE 조건 끝~ [속도]15,000개 복사 : 0.06x 초100,000개 복사 : 3.0x 초 갯수가 늘어날 수록 확연하게 느려지는데 이 부분은 서버의 디스크와 메모리 상태에 영향이 있을꺼 같은데. 체크 안해봤음. 나중에 SSD 로 바꾸거나 64비트 설치했을때 테스트 해봐야 될꺼 같음. [참고자료]http://dev.mysql.com/doc/refman/5.0/en/insert-select.html

MySql 에서 정렬 후 그룹 하는 방법.

사용자들이 올린 글 중에 가장 최신의 글 한개씩만 출력해주는 부분이 필요했다. 정렬 후 그룹화 아무 생각없이 손 가는대로 뭐 되겠지 라는 생각으로 쿼리를 만들었다. SELECT * FROM tableName GROUP BY tableName.user_idx ORDER BY tableName.register_date 한눈에 실행해서 봤을땐 "뭐 그룹핑도 되고 최신에 올린것도 뜨네..." 라고 생각을 하고 덮었는데 다시 테스트를 해보니. 사용자별 가장 최신 글이 아닌 그룹된 사용자 중 가장 최신 게시물 순으로 정렬이 되는거 아닌가!!!! 원하는 프로세스는 [정렬 => 그룹화] 인데. 동작하는 프로세스는 [그룹화 => 정렬] 이였다. 제길!!! 해결 방안은 2가지. 우선! [1안] 테이블 구조를 날짜 역순으로..

MySQL 검색속도 : int 와 varchar 누가 더 빠르냐? #2

이전에 테스트 해봤을때 테이블의 데이터 형을 정교하게 다듬지 못하고 더 큰 데이터형을 사용했던 문제가 있었다. 다시 한번 데이터 형을 정리하여 테스트를 해봤다. 나머지 사항은 이전과 동일하고 테스트만 진행함 [테스트 결과] 1000개 랜덤한 숫자(매번계산) 1000개 동일한 숫자(계산없음) 데이터갯수 VARCAHR INT VARCAHR INT 10만개 0.5852 0.3639 0.5763 0.3183 100만개 0.4824 0.4782 0.4716 0.3645 1000만개 0.7839 1.9888 0.7659 0.4827 [분석] 1. 검색 속도 부분에서는 INT 형으로 검색하는 것이 VARCHAR 로 검색하는 것 보다 빠르다. 2. 나누는 작업이 추가될 경우 오히려 속도가 늦어짐 3. 1000만개 데이..

MySQL 검색속도 : int 와 varchar 누가 더 빠르냐?

이론서나 관련 내용에서는 INT 형이 VARCHAR 형보다 빠르다고 한다. 이 부분에 대해서는 동의~ 하지만 문제는 과연 얼마나 빠르냐? 라는 것이 궁금해서 호작질을 시작했다. [목적] INT 형과 VARCHAR 의 속도 차이를 알아본다. INT 형 검색이 속도가 빨라 VARCHAR 데이터를 숫자형으로 나눠서 검색을 하는 것이 더 효율적인지를 알아봄 [실험방법] 캐쉬를 사용하지 않은 상테에서 각 단계별로 5회 / 회당 1000번 랜덤한 데이터를 조회한다. 각회당 5초의 시간을 쉬어준다. 결과를 평균내어 소수점 4자리에서 반올림하여 사용한다. [데이터] 01010000000 ~ 01099999999 의 데이터(전화번호) 중복되지 않는 랜덤한 데이터를 10만개, 100만개, 1000만개 단위로 입력 [테이블..

mysql 에서 group by 사용할때 결과값 행수를 알아내기.

검색된 값이 몇개인지를 알기 위해 "select count(1) from table" 로 알아냈는데. group by 를 사용하여 셀렉해온 결과물에 대해서는 count 가 각각의 행마다 적용이 되어 원하는 값이 안나오게 되었다. 그래서 뒤져본 결과 PHP 함수상에서 mysql_num_rows 라는 함수가 있다. 속도는 느리지만 이것을 사용하는게 대안. 다른 방법들 중 제대로 되는것들은 드뭄. 대신 갯수가 많아지면 어떤 결과가 나올지 모르겠네. 아구

Python can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock

python 으로 mysql 를 접근할때 >>> db = MySQLdb.connect(host=dbcon['host'],user=dbcon['user'],passwd=dbcon['passwd'],db=dbcon['db']) Traceback (most recent call last): File "", line 1, in ? File "/usr/lib/python2.4/site-packages/MySQLdb/__init__.py", line 75, in Connect return Connection(*args, **kwargs) File "/usr/lib/python2.4/site-packages/MySQLdb/connections.py", line 164, in __init__ super(Connecti..

개발개발/Python 2010.06.29

ERROR 126 (HY000): Incorrect key file for table ... mysql

Mysql::Error: Incorrect key file for table ‘/tmp/#sql_****.MYI try to repair it 라는 경고 메시지 처리하기 상당히 많은 데이터를 left join 하고 order by 와 group by 까지 걸어버리니 해당 메시지가 나오며 쿼리가 날아가지 않았다. 동일한 구문에서 order by 와 group by 를 제거하고 작업을 하니 정상 작동을 하였는데 이것으로 해당 구문을 실행시 메모리가 부족할꺼라는 예상을 하였다. 그 후 관련 Mysql 세팅에서 메모리 늘리는 작업을 해봤는데 소용이 없었다. 여전히 안됨 마지막으로 tmp 폴더 용량을 체크해봤더니 전체 사용할 수 있는 용량이 400메가가 채 안되었다. 이것을 여유 많은 곳으로 옮겼더니. 이상없이 ..

MySql 에서 해당 주의 일요일 구하기.

언어상에서도 구현이 가능하지만 MySql 에서 계산을 해보도록한다. 단지 그뿐... mysql> SELECT DATE_ADD('2010-03-04', INTERVAL (DAYOFWEEK('2010-03-04')-1) * -1 DAY); 설명을 하자면 DAYOFWEEK('날짜') : 해당 날짜의 요일을 숫자로 구한다. (1:일요일 ~ 7:토요일) [관련설명] DATE_ADD(날짜, INTERVAL 이동할날짜 DAY) : 지정한 날자로 부터 며칠을 옮길지를 정한다. 해당 명령어들은 MySql 버전에 따라 되고 안되고 하는 것들이 있으니 해당 부분은 메뉴얼을 참조함 [메뉴얼링크]

MySql 에서 datetime 과 timestamp 의 차이점...

다분히 실수에서 출발하였다. 간단한 페이지 만들면서 생각없이 timestamp 를 사용하였는데 이녀석은 CURRENT_TIMESTAMP 로 변경이 있을때마다 자동으로 날짜에 관한 데이터를 변경해준다. datetime 은 안됨 그래서 뭐가 다른지 한번 찾아봤다. 차이점은 몇가지가 있는데 우선 자동입력 기능 여부 DATETIME 은 일일히 수정시마다 날짜를 적어줘야함 TIMESTAMP 는 날짜를 지정 안해줘도 자동으로 입력 가능함 ( 옵션에 CURRENT_TIMESTAMP 를 사용할 경우 ) 두번째로 두 자료형에서 지원되는 범위도 다르다. DATETIME 의 경우 1000년 ~ 9999년 (아마테라스가 생각나는건... 라키시스 제발좀 훗딱 내주지...) 까지 지원하고 TIMESTAMP 의 경우 1970년 ~..

반응형