Mysql 在表格中间取一行 `SELECT r.*,u.username 从'reservation'开始作为r JOIN `用户的身份 其中u.id=r.user\u id 日期(r.bx_DATE)>=日期('2012-08-22') 日期(r.bx_DATE)
数据可在您今天的预订表(“2012-08-22”)中找到。但是,没有2013年的数据。数据可用性导致此更改。最可能的原因是索引或索引维护不当 您应该有一个索引,例如:Mysql 在表格中间取一行 `SELECT r.*,u.username 从'reservation'开始作为r JOIN `用户的身份 其中u.id=r.user\u id 日期(r.bx_DATE)>=日期('2012-08-22') 日期(r.bx_DATE),mysql,sql,phpmyadmin,mysqli,Mysql,Sql,Phpmyadmin,Mysqli,数据可在您今天的预订表(“2012-08-22”)中找到。但是,没有2013年的数据。数据可用性导致此更改。最可能的原因是索引或索引维护不当 您应该有一个索引,例如: `SELECT r.*, u.username FROM `reservation` AS r JOIN `users` AS u WHERE u.id = r.user_id AND DATE(r.bx_date) >= DATE('2012-08-22') AND DATE(r.bx_date
`SELECT r.*, u.username
FROM `reservation` AS r JOIN
`users` AS u
WHERE u.id = r.user_id
AND DATE(r.bx_date) >= DATE('2012-08-22')
AND DATE(r.bx_date) <= DATE('2012-08-22')
AND r.status='1'
ORDER BY r.id desc`
另外,如果使用InnoDB,请尝试运行
CREATE INDEX reservation_ndx ON reservation
(status, bx_date, user_id)
以便让系统更新表人口统计信息
另一个可能(但不太可能)的原因可能是表分区:
ANALYZE TABLE reservation;
因为,预订
可能会随着时间的增加而增加
更新:我没有提到明显的原因,一个查询可能会返回一百万条记录,而另一个查询会立即失败,但是如果您不知道SQL结果是什么(可能您只是在运行“盲”基准测试,只检查执行时间),这也有可能。(更新时更新:我刚刚看到两个查询返回相同数量的行。然后排除这个原因)
身份证件
选择类型
桌子
类型
可能的\u键
钥匙
基伦
裁判
排
额外的
1.
简单的
R
范围
日期索引
日期索引
3.
NULL3725
在何处使用;使用文件排序
1.
简单的
U
等式参考
主要的,重要的
主要的,重要的
4.
db.r.user\u id
1.
在哪里使用
您提到的这两个日期的记录数量有什么不同吗?另外,是否要重新索引该表并运行相同的查询,以查看是否是由于碎片造成的?表上有哪些索引?不!相同数量的记录。作为索引,我使用了这两个表的id。索引应该按顺序包含bx_日期和用户id,如果需要,应该通过提示显式指定。显示解释两种情况的结果。我认为添加索引可以解决问题。谢谢你的支持。好吧,让我知道。首先试着分析一下,我真的很好奇这种“宏观”案例的好处。有截至2013-01-01的数据
http://dev.mysql.com/doc/refman/5.1/en/partitioning-types.html
<table id="table_results" class="data ajax">
<thead><tr>
<th class="draggable">id
</th><th class="draggable">select_type
</th><th class="draggable">table
</th><th class="draggable">type
</th><th class="draggable">possible_keys
</th><th class="draggable">key
</th><th class="draggable">key_len
</th><th class="draggable">ref
</th><th class="draggable">rows
</th><th class="draggable">Extra
</th></tr>
</thead>
<tbody>
<tr class="odd"><td align="right" class="data grid_edit not_null nowrap ">1</td>
<td class="data grid_edit not_null ">SIMPLE</td>
<td class="data grid_edit ">r</td>
<td class="data grid_edit ">range</td>
<td class="data grid_edit ">bx_date_index</td>
<td class="data grid_edit ">bx_date_index</td>
<td class="data grid_edit ">3</td>
<td class="data grid_edit null"><i>NULL</i></td><td align="right" class="data grid_edit nowrap ">3725</td>
<td class="data grid_edit not_null ">Using where; Using filesort</td>
</tr>
<tr class="even"><td align="right" class="data grid_edit not_null nowrap ">1</td>
<td class="data grid_edit not_null ">SIMPLE</td>
<td class="data grid_edit ">u</td>
<td class="data grid_edit ">eq_ref</td>
<td class="data grid_edit ">PRIMARY</td>
<td class="data grid_edit ">PRIMARY</td>
<td class="data grid_edit ">4</td>
<td class="data grid_edit ">db.r.user_id</td>
<td align="right" class="data grid_edit nowrap ">1</td>
<td class="data grid_edit not_null ">Using where</td>
</tr>
</tbody>
</table>