我想从6个表中选择信息我有2个选择 第一个用where语句:
SELECT columns
FROM db1,
db2,
db3,
db4,
db5,
db6
WHERE db1.id = $user_id
OR db2.user_id = $user_id
OR db3.user_id = $user_id
OR db4.user_id = $user_id
OR db5.user_id = $user_id
OR db6.user_id = $user_id
$user_id
是php 1variable`,包含user_id;
Second Choice连接表和一个where语句: like here 哪一个快速,有用且清晰?我希望获得快速结果,因为我会用非常复杂的查询进行那种查询
答案 0 :(得分:1)
你想这样做
<?php
// works on php 5.6
add_action( 'genesis_before_entry_content', 'state_meta' );
function state_meta() {
if(!empty(genesis_get_custom_field('state')))
{
echo '<br /><strong>State</strong>: ';
genesis_custom_field('state');
}
}
?>
<?php
// works on php < 5.6
add_action( 'genesis_before_entry_content', 'state_meta' );
function state_meta() {
if(genesis_get_custom_field('state') != '')
{
echo '<br /><strong>State</strong>: ';
genesis_custom_field('state');
}
}
?>
在所有6个表的id列上放置一个索引。这将具有O(N)或更快的性能。
如果您想从多个表中获得相同的结果(例如,请保留重复项),您也可以使用SELECT columns
FROM db1
WHERE id = $user_id
UNION
SELECT columns
FROM db2
WHERE id = $user_id
UNION
SELECT columns
FROM db3
WHERE id = $user_id
UNION
SELECT columns
FROM db4
WHERE id = $user_id
UNION
SELECT columns
FROM db5
WHERE id = $user_id
UNION
SELECT columns
FROM db6
WHERE id = $user_id
而不是UNION ALL
。 UNION
要快得多,所以如果可以,请使用它。
您所拥有的查询将交叉连接所有表格,并且性能为O(N ^ 6),因为我确定您已找到。