티스토리 툴바


database/MySQL2012/04/19 18:37

union all 하는 view 가 있는데 시간이 너무 오래 걸려서 튜닝을 하면서 생각 한것이 드라이브 되는 데이타를 줄이려는 목적으로 파라메터를 받을 방법을 찾았음.


특별한 방법은 아니고 변수에 담아서 처리하는 방법인데...

이방법 실제 서비스에서 충돌날 가능성은 없을지 모르겟음... 입력값에 따라 다르겠지만 다분히 에러를 일으킬 소지가 보임.


create function p1() returns INTEGER DETERMINISTIC NO SQL return @p1;


create view h_parm as

select * from sw_hardware_big where unit_id = p1() ;


select s.* from (select @p1:=12 p) parm , h_parm s;


아래 참조 사이트에서 예제를 가져왔음.

혹시 다중 유저에서 문제가 없을지 경험이 있으신 분들은 답글 부탁드립니다.


참조 : http://stackoverflow.com/questions/2281890/can-i-create-view-with-parameter-in-mysql

저작자 표시

Posted by 이상 @Oisang 들국화
database/MySQL2012/04/09 11:50

table을 설계 할때 참조 테이블일 경우 pk를 auto increment를 이용해 순차적으로 생성되는 값을 사용할지 아니면 다은 참조 테이블의 key를 적거나 복합  key를 생성할지 고민이 되었다.


레코드 사이즈를 줄이기 위해 불필요한 컬럼을 줄이고 참조될 일이 거의 없는 auto incremtn pk를 생성할 필요가 있을까 해서 만들지 않았으나 생성해 주는게 innodb에서는 유리하다는 글들을 보게 되었고 인덱스 방법등 문서를 보았으나 개념 정립이 명확하지 않았다.


하지만 InnoDB는 일반적인 B-Tree 인덱스가 아닌 Cluster Index즉 리프 노드 키값에 데이타가 붙어 있는 정련된 형태임으로 불필요한 레코드가 들어가더라도 삽입 속도 와 특히 인덱스 사이즈를 줄이기 위해 autoincrement pk를 생성해 주는게 유리 할것 같다. 모든 인덱스는 pk를 포함하고 있어서 더욱더 그러하다.


아래 참조 페이지를 보면 데이타 량보다 인덱스 사이즈가 더 큰 기이한 현상도 당연히 발생일 될듯 하다.


참조 :

http://dev.paran.com/2011/06/10/mysql-innodb-engine-3-tips-you-must-know/

http://stackoverflow.com/questions/1460465/composite-primary-key-performance-drawback-in-mysql

저작자 표시

Posted by 이상 @Oisang 들국화
database/MySQL2012/04/04 16:20

http://forge.mysql.com/wiki/Top10SQLPerformanceTips

저작자 표시

Posted by 이상 @Oisang 들국화