【问题标题】:MySQL table VS PHP Array'sMySQL 表 VS PHP 数组
【发布时间】:2011-02-13 21:25:39
【问题描述】:

我有一个创建孩子礼物应用程序的应用程序,每个应用程序所有者都可以添加自己的礼物,现在我将礼物存储在 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)
);
?>

每次发送时我都需要更新礼物计数器,所以我必须循环查找礼物然后递增并将整个数组写入文件中。

这样创建这个数组很好:

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

什么是最好的解决方案: - 为每个应用程序创建一个 MySQL 表? - 为所有应用使用一张表? - 使用一张 MySQL 表存储所有应用程序的礼物,并在礼物 INSERT/UPDATE/DELETE 后缓存每个应用程序的 MySQL 结果?

【问题讨论】:

  • 每个应用一个表不是一个坏主意。我有一个使用数百个表的应用程序......
  • 我已经用它来存储用户和一些日志,在这个解决方案中使用缓存很好???
  • MySQL 内置了查询缓存。

标签: php mysql database arrays


【解决方案1】:

只需创建一个具有相同列数的表,再加上一个标识它对应的“应用程序”。不要为每个应用创建一个新的相同表,也不要一直从文本文件读取/写入,这都是并发和维护的噩梦。

【讨论】:

  • 每个应用最多可以上传100个礼物,我觉得SELECT从超过300k行的表中查询很慢?
  • 不,除非您认为单位数毫秒慢。这个网页涉及到对数百万行的表的许多查询,是不是很慢?在application 列上定义一个索引,它甚至不看表,只看索引。
  • 如果您使用 MyISAM 存储引擎,那么将所有应用程序存储在一个表中会导致并发问题。 InnoDB 不会受到如此严重的影响。编辑:但是,即使使用 MyISAM 存储引擎也比文本文件方法更好
  • 这也不是真的。我的网站每秒写入 MyISAM 表超过 300 次。如果 MyISAM 上的任何并发自动性能不佳,那么当 InnoDB 使用不可用/很少时,MySQL 将永远不会作为流行平台幸存下来。
【解决方案2】:

使用单个表

//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)

【讨论】:

  • 每个应用程序都有一个ID存储在Applications表中,每个应用程序都可以上传自己的礼物:)
猜你喜欢
  • 1970-01-01
  • 2013-06-11
  • 2013-09-13
  • 2013-03-17
  • 1970-01-01
  • 1970-01-01
  • 2011-07-31
  • 1970-01-01
  • 2012-03-14
相关资源
最近更新 更多