2010-03-15 5 views
1

나는 PHP &에 아주 새롭다, 나가 창조하고있는 1 개의 기능은 큰 테이블 또는 데이타베이스에 접근 할 필요가있다. 나는 데이터베이스를 만들었고 현재 MySQL 테이블에 있는데 문제없이 액세스하고 있습니다. 테이블의 길이는 11,000 행이며, 8 개의 열 (모든 텍스트는 8 자 미만)입니다. 정적이며 변경되지 않습니다. 지나치게 구체적이지 않으면 내 사용자가 스크립트를 트리거하여 500 번이나 그 이상의 데이터에 액세스하는 버튼을 누르게됩니다. 그래서 일반적으로 그것은 큰 '스위치'또는이 모든 데이터를 포함하는 더 좋은 연습이 될 것이다 '하면 ... 다음'내 스크립트에 조건부 권리, 오히려 어쩌면 수천 번을 열고 데이터베이스 연결 수백에 접근, 또는 이상 ? 그런 일이 일어나기를 기다리는 병목 일 수도 있습니다. 감사!초심자 PHP/mySQL 질문

+0

뭔가처럼 소리 단일 쿼리 어떤 계산을 할 수있는 데이터베이스를 사용? 유지 관리의 용이성을 위해 개인적으로 데이터베이스를 고수 할 것입니다. – Dolph

+0

Dolph!에 동의합니다! : D – Shrayas

+0

데이터베이스가 작동 중이고 성능이 배열과 비교됩니다. 제안 해 주셔서 감사합니다. –

답변

1

나는 데이터베이스를 유지하지만 스크립트의 시작 부분에 전체 내용을 메모리 (배열)로로드합니다. 나중에 최적화하려는 경우 매우 간단한 지연로드 체계를 사용하여 요청시 데이터 일괄 처리를 읽을 수 있습니다. 아마도 행이 요청 될 수 있다는 힌트가있을 수 있습니다. 그러나 그것을 간단하게해라!

+0

단순 ... 나 자신과 매우 흡사하다! 팁 고마워. –

+0

땀 냄새가 없습니다. 투표를 통해 도움이되는 답변에 대한 보상을하고 그 중 하나를 "답변"으로 선택하십시오. 또한 다른 사람들이 찾을 수 있도록 제목을 편집하여 제목을 요약하십시오. – Martin

1

귀하의 질문을 읽으면서 계산상의 향상을위한 많은 공간이있는 것처럼 보입니다. 이 응용 프로그램 데이터의 이러한 큰 집합에 뭔가 그렇게 여러 번 수행해야 드물다.

그러나 11,000 개의 행이있는 데이터베이스는 사실 약간 작습니다. 데이터 합계는 매우 작아야합니다 (3 바이트 [최대] * 8 문자 * 8 필드 * 11,000 행 = ~ 2MB). 프로그램을 실행하기 전에 데이터베이스를 메모리에 미리로드하고 데이터베이스 액세스 대신 직접 사용하십시오. 그렇게 빨리 실행해야합니다.

+0

그것은 데이터에 액세스하는 시간을 많이 같지 않지만,지도 개체에 대한 큰 조회 테이블의 - 이름이 지정된 객체의 북쪽, 남쪽, 동쪽과 서쪽 특정 개체에 대해 무엇을 볼 수 있습니다. 나는 당신이 그것을 메모리에로드하는 것에 대해 말하는 것을 시도 할 것입니다. 감사! –

2

더 나은는 500 번 액세스를 제거합니다. 왜 그것을 필요로합니까? 일반적으로 우리는 당신이 자신을 벤치 마크 할 필요가

+0

사실. 나는 이것을 제안 할 것이다. – Shrayas