내 토끼에 대한 정보를 저장할 테이블이 있습니다. 다음과 같이 보입니다.
create table rabbits (rabbit_id bigserial primary key, info json not null);
insert into rabbits (info) values
('{"name":"Henry", "food":["lettuce","carrots"]}'),
('{"name":"Herald","food":["carrots","zucchini"]}'),
('{"name":"Helen", "food":["lettuce","cheese"]}');
당근을 좋아하는 토끼를 어떻게 찾아야하나요? 나는 이것을 생각 해냈다.
select info->>'name' from rabbits where exists (
select 1 from json_array_elements(info->'food') as food
where food::text = '"carrots"'
);
그 쿼리가 마음에 들지 않습니다. 엉망입니다.
전임 토끼 키퍼로서 저는 데이터베이스 스키마를 변경할 시간이 없습니다. 토끼에게 제대로 먹이고 싶어요. 해당 쿼리를 수행하는 더 읽기 쉬운 방법이 있습니까?
1
흥미로운 질문입니다. 나는 그것을 가지고 놀았지만 나에게 떠올랐다. 나는 당신이 "더 나은"을 의미하는지 잘 모르겠다. 답변을 어떤 기준으로 판단하고 있습니까? 가독성? 능률? 다른?
—
David S
@DavidS : (질문을 업데이트했습니다.) 효율성보다 가독성을 선호합니다. 스키마를 고정하고 있기 때문에 전체 테이블 스캔보다 더 나은 것을 기대하지는 않습니다.
—
Snowball 2013
내가 토끼 때문에이 질문에 찬성 한 것이 잘못입니까?
—
osman
난 그냥 때문에 토끼의이 질문을 upvoted 다음 주석 @osman를 보았다
—
1valdis
나는 당신의 코멘트를보고 토끼 때문에 찬성해야한다는 것을 깨달았습니다
—
Peter Aron Zentai