2013-04-23 2 views
-2

누군가가 PHP를 통해 SQL의 속도 차이의 평균 백분율 또는 그 반대를 알 수 있습니까? "속도 차이"란 데이터 조작 과정에서의 의미입니다.SQL과 PHP 사이의 절차상의 시차

나는 거대한 데이터베이스로 웹 사이트를 관리해야하는데, 그런 거대한 데이터베이스를 다루는 것은 처음입니다. PHP에 대한 지식이 필자의 SQL보다 10 배 우수합니다. 이런 이유로 저는 항상 PHP 스크립트에서 데이터를 조작했습니다.

예를 들어, 클래스를 사용하여 "picture"테이블의 그림 데이터를 저장하기로 결정했습니다. PDO와 fetchMode FETCH_CLASS를 사용하여 생성자에서 가져온 데이터를 조작 할 수 있습니다. 한 필드는 "widthxheight"와 같은 문자열 유형의 그림 크기입니다. 내 생성자에서 별도의 변수에 두 속성을 저장하는 분할 메서드를 사용합니다. 많은 행이 있으므로이 분할을 SQL 코드의 fetch 문에서 직접 수행하는 것이 더 좋을지 알고 싶습니다.

내가 10k 개 이상의 행을 가지고 있다고 가정 해 보겠습니다. 변경 사항이 효과적입니까? 또는이 목적으로 PHP를 사용할 수 있습니까?

+1

너비/높이는 두 개의 별도 int 열이어야하며 마법 값을 가진 단일 문자열이 아니어야합니다! 문자열 값이 필요하다면 PHP 클래스 안에 * *를 만들면됩니다. –

+0

제가 테이블의 디자이너라면, 나는 그것을했을 것입니다 : – user544262772

+0

@FrancisAvila가 설명하는 것처럼 만들어야합니다. 예를 들어, 현재 방법을 사용하면 높이가 1024 이상인 모든 이미지를 쿼리합니다. –

답변

1

여기에 엄격한 규칙이 없습니다. 일부 작업은 SQL에서 훨씬 빨라지고 일부는 PHP에서 더 빨라질 것이고 속도 차이는 크게 달라질 것입니다.

설명하는 시나리오는 큰 차이를 가져서는 안되기 때문에 가장 이해하기 쉽고 유지 보수가 쉬운 코드를 만드는 방법은 무엇이든해야합니다. (아마 PHP로, 지금하고있는 것처럼)

그러나 너비와 높이가 DB에 저장되는 방식은 끔찍하고 잘못되었습니다. 이것이 다루어야하는 데이터베이스 설계의 특징이라면, 어느 정도 깨진 점을 생각해보십시오.

2

귀하의 경우에는 큰 차이가있을 것이라고 생각합니다.

N 행을 선택합니다. 당신은 ervery 단일 행에 하나의 값을 변경합니다. 이것은 아마도 N 개의 트랜잭션을 가진 N 개의 업데이트 쿼리가 될 것입니다.

하나의 업데이트 쿼리를 정의한 경우 하나의 명령문과 하나의 트랜잭션 내에서 N 개의 행을 업데이트 할 수 있습니다.

더 빨라질 것입니다.

+0

누락 된 부분이 있습니까? 그의 예제에서 "데이터베이스에서 쿼리 할 때 SQL 또는 PHP에서이 값 ('widthxheight')을 나눠야합니까?"라는 질문에 대한 답을 얻었습니다. 물론 여러 행에 대한 업데이트를 수행하면 한 번에 한 행을 업데이트하는 것보다 낫습니다. 그러나 게시물/예제에는 하나의 "업데이트"가 없습니다.위에서 언급 한 바와 같이 –

+0

PHP에서의 분할은 'UPDATE my table set width = substr (withheight, 0,2)'높이 = substr (withheight, 3,2)와 비교하면 느려집니다. –

+0

SQL 명령이 없습니다. 'x'의 위치를 ​​찾았으므로 x에 대한 어려운 위치를 가정했습니다. –

0

나는 물질에 차이가있을 것이라고 의심한다. 그러나 sql은 분할 함수가없고 여러 값을 지원하지 않으므로 sql에서 분할 함수를 복제하는 여러 함수 호출이있을 것입니다 (N 번째 delimeter와 delimeter의 다음 인스턴스를 찾습니다). 란. 그리고 그것은 모든 칼럼에 대해 수행되어야 할 것입니다. 값을 쉼표로 구분하면 find_in_set을 사용할 수 있지만 여전히 여러 함수 호출이 가능합니다.

+0

PHP 대 SQL을 읽는 중 하나의 값을 나누는 것에 대한 질문이 있습니까? 많은 행을 수정하는 것이라고 생각했습니다. –