나는 사람들이 말하는 커서를 사용해서는 안됩니다 반응했다 여기 Using cursor in OLTP databases (SQL server)장점과 (SQL 서버)에 커서를 사용하는 단점
질문을 물었다.
커서가 사용하기에 매우 강력한 도구라고 느낍니다. Microsoft에서 나쁜 개발자가 커서를 지원하지 않는다고 생각합니다. 행의 열 값이 값에 종속되어있는 테이블 이전 행의 동일한 열의 한 번 백 엔드 프로세스 인 경우 커서를 사용하는 것이 허용 가능한 선택이라고 생각하지 않습니까?
내 머리 꼭대기에서 나는 커서 사용에 부끄러움을 느끼지 않는 몇 가지 시나리오를 생각할 수 있습니다. 너희들이 다르게 느껴지면 나에게 알려줘.
1> 몇 분 안에 실행을 완료하는 잘못된 데이터를 정리하는 한 번의 백엔드 프로세스입니다. 2> 장기간에 한 번 실행되는 배치 프로세스 (일년에 한 번). 위의 시나리오에서 다른 프로세스에 눈에 띄는 부담이 없으면 커서를 피하기 위해 여분의 시간을 코드를 작성하는 데 무리가 없습니까? 다른 말로하면 어떤 경우에는 개발자의 시간이 다른 어떤 것에도 거의 영향을 미치지 않는 프로세스의 성능보다 더 중요합니다.
제 의견으로는 커서를 사용하지 말아야 할 몇 가지 시나리오가 있습니다. 1> 매우 자주 호출 될 수있는 웹 사이트에서 호출 된 저장 프로 시저입니다. 2> 하루에 여러 번 실행되고 많은 리소스를 소비하는 SQL 작업입니다.
필자는 당면 과제를 분석하고 실제로 대안을 비교하지 않고 "커서를 사용해서는 안됩니다"와 같은 일반 성명을 작성하는 것이 매우 피상적이라고 생각합니다.
귀하의 의견을 알려주십시오.
Sql Server 2012는 집합 기반 방식으로 이전 행의 값을 가져 오는 경우를 지원합니다. – automatic
"웹 사이트에서 호출 된 저장 프로 시저"는 너무 모호합니다. 커서가 문제를 해결하기위한 가장 합리적인 선택이고 웹 페이지에서 프로 시저를 호출해야하는 경우 ... –