Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

Mysql 在表格中间取一行 `SELECT r.*,u.username 从'reservation'开始作为r JOIN `用户的身份 其中u.id=r.user\u id 日期(r.bx_DATE)>=日期('2012-08-22') 日期(r.bx_DATE)

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

数据可在您今天的预订表(“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) <= 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>