這兩個查詢有沒有區別(優化明智)?像「%%」這樣的列名和沒有條件有區別嗎?
select * from users;
和
select * from users where first_name like '%%' and last_name like '%%'
我建立查詢在PHP中使用動態傳遞的參數。 因此,例如..
$first_name_str = "";
if($firstname)
{
$first_name_str = "first_name = '%".$firstname."%' and";
}
$last_name_str = "";
if($lastname)
{
$last_name_str = "last_name = '%".$lastname."%' and";
}
$query =
"select
*
from
users
where
".$first_name_str."
".$last_name_str."
1=1";
的原因,我問這個是因爲我讀的MySQL只使用一個索引,而做一個選擇。所以,如果我有姓和名的個人索引,只會使用一個。住在我作爲查詢的情況:
select * from users where first_name like '%%' and last_name like '%%'
默認情況下,我可以同時FIRST_NAME添加級聯指數和last_name和搜索會快很多?
使用EXPLAIN並查看其差異。如果有任何區別。一個索引永遠不會在'LIKE'%%''上使用,從通配符開始使索引無用。 – 2011-02-24 09:33:48