php mysql保存查询结果
我有一个这样的问题:php mysql保存查询结果,php,mysql,Php,Mysql,我有一个这样的问题: $get_feed_amount = mysql_query(" SELECT COUNT(*) as num FROM `migo_feeds` WHERE ( ( feed_type='10' ||
$get_feed_amount = mysql_query("
SELECT COUNT(*) as num
FROM `migo_feeds`
WHERE
(
(
feed_type='10' ||
feed_type='11' ||
feed_type='28' ||
feed_type='27' ||
feed_type='30' ||
feed_type='31'
)
AND
(
from_id IN (
SELECT DISTINCT from_id
FROM `migo_relations`
WHERE (
(to_id='".$_SESSION['user_id']."')
AND
(rel_processed='1' AND rel_accepted='1')
)
)
OR
to_id IN (
SELECT DISTINCT from_id
FROM `migo_relations`
WHERE (
(to_id='".$_SESSION['user_id']."')
AND
(rel_processed='1' AND rel_accepted='1')
)
)
OR
from_id=".$_SESSION['user_id']."
OR
to_id=".$_SESSION['user_id']."
)
AND
feed_deleted='0'
);
");
$migo_groups = mysql_query("
SELECT
group_id,
group_title,
group_desc,
group_cat_name,
group_area,
group_city,
group_quarter,
group_pic,
group_tmb,
group_members_amount
FROM
`migo_groups`
WHERE (
group_type=1
AND
group_id IN (
SELECT group_id
FROM `migo_group_membership`
WHERE (
membership_type IN (1,2,3)
AND
to_id IN (
SELECT DISTINCT from_id
FROM `migo_relations`
WHERE (
(to_id='".$_SESSION['user_id']."')
AND
(rel_processed='1' AND rel_accepted='1')
)
)
)
)
)
ORDER BY RAND() LIMIT 4;
");
正如您所看到的,在这个查询中,im allready选择了两次朋友
之后我还会进行如下查询:
$get_feed_amount = mysql_query("
SELECT COUNT(*) as num
FROM `migo_feeds`
WHERE
(
(
feed_type='10' ||
feed_type='11' ||
feed_type='28' ||
feed_type='27' ||
feed_type='30' ||
feed_type='31'
)
AND
(
from_id IN (
SELECT DISTINCT from_id
FROM `migo_relations`
WHERE (
(to_id='".$_SESSION['user_id']."')
AND
(rel_processed='1' AND rel_accepted='1')
)
)
OR
to_id IN (
SELECT DISTINCT from_id
FROM `migo_relations`
WHERE (
(to_id='".$_SESSION['user_id']."')
AND
(rel_processed='1' AND rel_accepted='1')
)
)
OR
from_id=".$_SESSION['user_id']."
OR
to_id=".$_SESSION['user_id']."
)
AND
feed_deleted='0'
);
");
$migo_groups = mysql_query("
SELECT
group_id,
group_title,
group_desc,
group_cat_name,
group_area,
group_city,
group_quarter,
group_pic,
group_tmb,
group_members_amount
FROM
`migo_groups`
WHERE (
group_type=1
AND
group_id IN (
SELECT group_id
FROM `migo_group_membership`
WHERE (
membership_type IN (1,2,3)
AND
to_id IN (
SELECT DISTINCT from_id
FROM `migo_relations`
WHERE (
(to_id='".$_SESSION['user_id']."')
AND
(rel_processed='1' AND rel_accepted='1')
)
)
)
)
)
ORDER BY RAND() LIMIT 4;
");
再次选择朋友。。
这似乎有点浪费资源。特别是如果表非常大,加载东西可能需要很长时间,甚至根本不加载
我的问题是,我能在开始时做一个朋友查询,然后在任何地方使用结果吗?这有什么好处吗
我在想也许把结果保存在一个数组里或者别的什么东西,这是不是很糟糕?什么是最好的运作方式
问候,,
Alexander您可以将第一个查询的结果保存在一个数组中,然后仅使用该数组满足第二个需要 例如:
$result=array();
$query=mysql_query("SELECT complex sql [...]");
while($r = mysql_fetch_assoc($query)) {
$result[] = $r;
/*your first operation here*/
}
现在,在结果中,您拥有第一个查询的所有结果,并且您可以使用该数组执行第二个操作,而无需其他查询
foreach($result as $row) {
// code
}
还请注意,您应该使用PDO。您可以将第一个查询的结果保存在数组中,然后仅使用该数组满足第二个需要 例如:
$result=array();
$query=mysql_query("SELECT complex sql [...]");
while($r = mysql_fetch_assoc($query)) {
$result[] = $r;
/*your first operation here*/
}
现在,在结果中,您拥有第一个查询的所有结果,并且您可以使用该数组执行第二个操作,而无需其他查询
foreach($result as $row) {
// code
}
还请注意,您应该使用PDO。但这是推荐的吗?我的意思是,我不知道哪一个更快,php写一个arra或数据库做一个简单的朋友请求查询与索引使用数组,而不是做一个查询,它的速度高达10倍,但这是推荐的吗?我的意思是,我不知道哪一个更快,php编写arra或数据库使用索引进行简单的朋友请求查询使用数组代替执行查询速度高达10倍