2011-02-13 7 views
0

나는 아이의 선물 응용 프로그램을 작성하는 응용 프로그램을 가지고 있고, 모든 응용 프로그램 소유자가 지금 내가 PHP를 배열에 선물을 저장하고있어, 자신의 선물을 추가 할 수 있습니다 : 나는 업데이트해야MySQL의 테이블 VS PHP 배열의

<?php 
$gifts_array = array(
array(>4,"Flower",>250,"5_250.jpg",301), 
array(1,"a Good Day",30,"3_30.jpg",153), 
array(2,"cat",10,"3_10.gif",139), 
array(3,"batman",20,"2_20.jpg",101), 
array(11,"White Wolf",100,"11_100.jpg",5), 
array(10,"crazy cat",30,"10_30.gif",2), 
array(8,"Gift",100,"6_100.jpg",2), 
array(12,"Car",120,"12_120.jpg",1), 
array(9,"cat 2",30,"9_30.gif",1), 
array(7,"2Pac",500,"3_500.jpg",0), 
array(6,"Outlawz",500,"4_500.jpg",0) 
); 
?> 

선물 카운터를 보낼 때마다, 그래서 선물을 찾아 증가하고 파일에 전체 배열을 작성 루프를해야합니다.

그것은 그런이 Array 생성하는 것이 좋다 :

'100'=>array('gname'=>"Flower",'gpoints'=>250,'gpic'=>"5_250.jpg",'gviews'=>301), 
    100 is the Gift ID. 

최상의 솔루션 무엇인가 을 - 모든 응용 프로그램 MySQL의 테이블에 대해 생성? - 모든 응용 프로그램에 대해 하나의 표를 사용합니까? - 선물 삽입/업데이트/삭제 후 하나의 MySQL 테이블을 사용하여 모든 응용 프로그램 선물을 저장하고 각 응용 프로그램에 대한 MySQL 결과를 캐시합니까?

+0

한 표는 나쁜 생각이 아니다 하나의 테이블을 사용합니다. 나는 테이블의 수백을 사용하는 애플 리케이션을 가지고 ... – GolezTrol

+0

나는이 솔루션에 대한 캐시를 사용하여 사용자 및 일부 로그를 저장하는 데 이미 사용되는 좋은거야 ??? – Hamza

+0

MySQL에는 쿼리 캐시가 내장되어 있습니다. –

답변

3

동일한 수의 열을 가진 하나의 테이블과 해당 "응용 프로그램"을 식별하는 하나의 테이블을 만들면됩니다. 각 응용 프로그램에 대해 새로운 동일한 테이블을 만들지 말고 텍스트 파일에서 읽기/쓰기를 유지하지 마십시오. 동시성과 유지 관리의 악몽입니다.

+0

모든 응용 프로그램에서 최대 100 개의 선물을 업로드 할 수 있습니다. SELECT 쿼리는 300k 행 이상인 테이블에서 느린 쿼리일까요? – Hamza

+1

아니요, 한자리 수 밀리 초를 느리게 생각하지 않는 한 아닙니다. 이 웹 페이지에는 수백만 행의 테이블에 대한 많은 쿼리가 포함되어 있습니다. 'application' 컬럼에 인덱스를 정의하면 인덱스 만 보는 테이블조차 보이지 않습니다. –

+1

MyISAM 스토리지 엔진을 사용하는 경우 모든 애플리케이션을 하나의 테이블에 저장하면 동시성 문제가 발생합니다. InnoDB는 나쁘게 고통을 겪지 않을 것입니다. 편집 : 그러나 MyISAM 스토리지 엔진을 사용하는 경우에도 텍스트 파일 접근 방식보다 낫다. – JamesHalsall

0

는 응용 프로그램 당

//Create a table to hold all your info 
CREATE applications (id INTEGER AUTO INCREMENT, gname VARCHAR(255), gpoints INTEGER, gpic VARCHAR(255), gviews INTEGER); 

//Increment the number of views 
UPDATE applications SET gviews=gviews+1 WHERE gname='Flower' 

//Get the names of all the applications (replace gname with what you want to get or * for all) 
SELECT gname FROM applications 

//Initially add the entries into applications 
INSERT INTO applications (gname, gpoints, gpic, gviews) VALUES ('Flower', 250, '5_250.jpg', 301) 
+0

모든 응용 프로그램은 응용 프로그램 테이블에 저장된 ID를 가지고 있으며 모든 응용 프로그램은 자신의 선물을 업로드 할 수 있습니다 :) – Hamza