[摘要]+----+-------------+-----------+------------+------+---------------+-------------+---------+-------...
+----+-------------+-----------+------------+------+---------------+-------------+---------+-------+------+----------+-------+从上述的输出结果,显然MySQL服务器会使用索引customer_id来查询表格。可以看需要扫描的行数为1。虽然我只是在一个行数为500的表格中执行这条查询语句,索引在检索一个更大的数据集的时候优化程度更加明显。 2. 用Union优化Like语句有时候,你可能需要在查询中使用or操作符进行比较。当or关键字在where子句中使用频率过高的时候,它可能会使MySQL优化器错误的选择全表扫描来检索记录。union子句可以是查询执行的更快,尤其是当其中一个查询有一个优化索引,而另一个查询也有一个优化索引的时候。 比如,在first_name和last_name上分别存在索引的情况下,执行如下查询语句: 上述查询和下面使用union合并两条充分利用查询语句的查询相比,速度慢了许多。 mysql> select * from students where first_name like 'Ade%' union all select * from students where last_name like 'Ade%' 3. 避免使用带有前导通配符的表达式当查询中存在前导通配符时,Mysql无法使用索引。以上面的student表为例,如下的查询会导致MySQL执行全表扫描,及时first_name字段上加了索引。 mysql> select * from students where first_name like '%Ade' 使用explain分析得到如下结果: mysql> explain select * from students where first_name like '%Ade' ;
+----+-------------+----------+------------+------+---------------+------+---------+------+------+----------+-------------+
|
关键词: MYSQL查询怎样优化?mysql查询优化的办法介绍