这两个查询有没有区别(优化明智)?像“%%”这样的列名和没有条件有区别吗?
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