database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
ㆍSybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Sybase Q&A 3937 게시물 읽기
No. 3937
제발 도와주세요 view 카운트가 안됩니다. text 필드와 함께 만든 뷰....
작성자
박찬구(mirinae00)
작성일
2009-11-06 11:28ⓒ
2009-11-06 11:55ⓜ
조회수
7,328

view 테이블  count와 order by 가 왜 안될까요..


또 한가지 여거서 top은 또 왜 안될까요. 안된서 set rowcount로 쓰고 있습니다. 원래 그냥은 top 됩니다.(top문제는 그렇다 치고)


하여튼 안되네요. 이유인 즉슨. abstract 라는 text 필드가 있는데. view로 생성했더니. view의 abstracts 필드검색 하여 count 를 하니깐 오류가 나더군요.


그냥 select * from view where abstract like..  하면 되는데 select count(*) from view where abstract like...  는 안되더군여. 


어찌어찌해서 view 생성시 abstracts 필드를 convert(varchar(2000), abstracts) 


로 변환해서 만들었더니. select count(*) from view where abstract like...  문제가 해결 되었습니다. 그래서 잘 되나 보다 했는데.. 


이제는 전체 조건없이 select count(*) from view 하고   select * from view order by issued desc 요게 안되네요...



아 정말 어렵습니다.


sybase view  입니다.


union all 을 사용했구요 데이터는 5400개 정도 입니다.


ASE 12.5.0.3


아마 5400개 되는 데이타 count가 지금 많다고 멀 늘려 달라고 하는거 같은에 어디서 어떻게 해야 할지 모르겠네요.


temp 테이블이나 master테이블 쪽에 멀 늘려줘야 하는지 아니면 sybase 세팅 부분이 문제인지...


오류메시지 입니다.


Attempt to update or insert row failed because resultant row of size 2043 bytes is larger than the maximum size (1961 bytes) allowed for this table.

이 글에 대한 댓글이 총 2건 있습니다.

참고로 제 test server는 4 page로 설정 되어 있습니다
확인 방법 : select @@maxpagesize

1. text1과 text2 table을 다음과 같이 만들었습니다.

( a int,
  b char(20),
  c text ,
  d datetime )
 
2. 각 각 3record씩 입력 했고요
 insert text1 values(....)...
 insert text2 values(....)...
 
3. select char_length(c) text_length from text1 으로 text data길이를 확인 했습니다.

 text_length
 -----------
        3714
        3714
        3714
 
4. View materialization(실체화)

create view V1
as
select * from text1
union all 
select * from text2

--query수행 결과
select * from V1 where c like '%view%'  -- ok
select count(*) from V1 where c like '%view%' -- failed

------------------------ Execute ------------------------
4426 error
This query cannot be processed because it contains TEXT, IMAGE or off-row Java columns and references a view defined
with a subquery, an outer join, or a distinct clause.
----------------- Done ( 1 errors ) ------------------
원인은 text/image컬럼을 가진 query에 대한 View materialization(실체화)을 할 수 없기 때문입니다.


5. PAGE SIZE

create view V2
as
select a,b, convert(varchar(5000), c) c,d from text1
union all 
select a,b, convert(varchar(5000), c) c,d from text2

--query수행 결과
select * from V2 where c like '%view%' -- ok
select * from V2 -- ok
   
select count(*) from V2 where c like '%view%' -- failed
select count(*) from V2 -- failed
select  * from V2 order by d desc --

------------------------ Execute ------------------------
Attempt to update or insert row failed because resultant row of size 4836 bytes is larger than the maximum size (4011 bytes)
allowed for this table.
Command has been aborted.
(0 rows affected)
----------------- Done ( 1 errors ) ------------------
원인은 page size가 4page이고 conversion한 data는 4 page가 넘기 때문입니다.

6.결론
ASE는 server를 install할 때 page size을 지정하게 끔 되어 있고요, 이것에의해 row length의 최대길이가 결정 됩니다.
그래서 server를 재 install해야 해결 됩니다. 4k page나 8k page로 변경하시고 이때는 text을 쓰지마시고 varchar(2000)으로 문제가 없습니다.
 

Chandad(ChanDad)님이 2009-11-10 15:11에 작성한 댓글입니다.

답변 정말 감사합니다.

답변이 안달려서 기다리다.. 포기했었는데.

이렇게 상세히 답변을 달아주시다니.

늦게나마 정말. 감사합니다.

일단 임시로.. 카운트는 로우를 전부 불러와서 리스트에 담아.

리스트 사이즈로 했습니다.

박찬구님이 2010-03-02 10:54에 작성한 댓글입니다.
이 댓글은 2010-03-02 17:47에 마지막으로 수정되었습니다. Edit
[Top]
No.
제목
작성자
작성일
조회
3940db 2개가 있는데 한쪽에서만 정상 작동합니다. 도와주세요~ [1]
김태호
2009-11-13
6534
3939update문 질문좀 드리겠습니다..ㅠㅠ [1]
손건영
2009-11-13
7473
3938사이베이스중 text필드의 크기? [1]
승우
2009-11-09
7128
3937제발 도와주세요 view 카운트가 안됩니다. text 필드와 함께 만든 뷰.... [2]
박찬구
2009-11-06
7328
3936MSTR을 사용할 경우 인덱스 사용.. [1]
에모토
2009-11-04
6477
3935하나의 테이블에 bigint와 numeric 타입을 같이 사용할 경우... [1]
에모토
2009-11-04
6645
3934서브쿼리에 대해 질문 드립니다. [1]
사이베이스
2009-11-03
6542
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다