草庐IT

ordered_qty

全部标签

mysql - 为什么 MAX() 比 ORDER BY ... LIMIT 1 慢 100 倍?

我有一个表foo,其中包含(以及其他20个)列bar、baz和quux以及索引在baz和quux上。该表有大约50万行。为什么以下查询的速度差异如此之大?查询A耗时0.3秒,而查询B耗时28秒。查询Aselectbazfromfoowherebar=:barandquux=(selectquuxfromfoowherebar=:barorderbyquuxdesclimit1)解释idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra1PRIMARYfoorefquuxIdxquuxIdx9const2"Usingwhere"

MySQL 不使用 JOIN、WHERE 和 ORDER 的索引

我们有两个类似于简单标记记录结构的表,如下所示(实际上它要复杂得多,但这是问题的本质):tag(A.a)|recordId(A.b)1|12|12|23|2....和recordId(B.b)|recordData(B.c)1|1232|6663|1246问题是获取带有特定标签的有序记录。这样做的明显方法是在(PK)(A.a,A.b),(A.b),(PK)(B.b),(B.b,B.c)上使用简单的连接和索引:selectA.a,A.b,B.cfromAjoinBonA.b=B.bwherea=44orderbyc;但是,这会产生令人不快的文件排序结果:+----+-----------

mysql - ORDER BY RAND() 替代方案

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:MySQL:AlternativestoORDERBYRAND()我目前有一个以ORDERBYRAND(HOUR(NOW()))LIMIT40结尾的查询,以获得40个随机结果。结果列表每小时更改一次。这会杀死查询缓存,从而损害性能。您能否建议另一种方法来获取随机(ish)结果集,这些结果会不时变化?它不必每小时,也不必完全随机。我更喜欢随机结果,而不是对表中的任意字段进行排序,但作为最后的手段我会这样做......(这是一个新产品列表,我想不时地对它们进行一些调整)。

php - MySQL ORDER BY Date 字段不是日期格式

我有一个包含DD/MM/YYYY格式的日期的字段,我需要按此字段对结果进行DESC排序,但它保存为VARCHAR,我无法更改它。有解决方法吗?我真的没有办法更改字段类型,所以请不要说这是一个糟糕的方法,因为我已经知道了。我只需要知道这是否可能。提前感谢您的帮助和建议。 最佳答案 您可以通过以下方式实现,SELECT...FROM...ORDERBYSTR_TO_DATE(yourDate,'%d-%m-%Y')DESC 关于php-MySQLORDERBYDate字段不是日期格式,我们在

mysql - 如何在 UNION 中使用 ORDER BY

我想在每个UNIONALL查询上使用ORDERBY,但我想不出正确的语法。这就是我想要的:(SELECTid,user_id,other_id,nameFROMtablenameWHEREuser_id=123ANDuser_inIN(...)ORDERBYname)UNIONALL(SELECTid,user_id,other_id,nameFROMtablenameWHEREuser_id=456ANDuser_idNOTIN(...)ORDERBYname)编辑:明确一点:我需要两个这样的有序列表,而不是一个:12个3个1个2个3个4个5非常感谢! 最

MySQL order by (string to int)

SELECT`01`FROMperfWHEREyear='2013'orderbyCAST(`01`ASINT)LIMIT3第01列的数值为varchar。我需要将“01”的前3位排序为整数。为什么这个查询不起作用?像这样的表格;+----------------------+|name|01|02|year|+----------------------+|name1|90|***|2013|+----------------------+|name2|93|55|2013|+----------------------+|name3|***|78|2013|+-----------

php - Mysql ORDER BY 使用日期数据行

我有这样的查询:SELECTtitle,desc,dateFROMtablenameORDERBYdateASC,titleASC;当数据实际有日期时工作正常。问题是,日期提交是可选的,所以我有时会得到0000-00-00作为日期,这会产生将所有未注明日期的行放在顶部的不幸影响。所以,我尝试了这个:SELECTtitle,desc,dateFROMtablenameORDERBYdateDESC,titleASC;哪种方法有效,但不是真正有效-所有带日期(非0000-00-00)的项目都按降序排列,然后是所有带0000-00-00的项目。我想做的是按日期ASC、标题ASC排序,但前提是

mysql - ORDER BY 日期在即将到来的日期之后的过去日期

我需要对MySql数据库中的表执行查询,结果行的顺序如下所示:如果今天是2012年10月9日:...11/09/1212/09/1215/09/1208/09/12有没有办法直接在MySQL中实现这个?我是这样解决的:首先,select语句包含一个新的bool值,用于标记日期是过去还是future:SELECTDISTINCT*,CASEWHENstartdate其次,我做了两次“订购依据”:首先是past_or_futurebool值,然后是日期,条件如下:ORDERBYpast_or_futureDESC,CASEWHENpast_or_future=1THENstartdateE

sql - SELECT UNION 和 ORDER BY 在 mysql.. 怎么办?

我想从一个表中获取所有行,但以不同的方式对它们进行排序。例如我写(SELECT*FROMtable1ORDERBYfieldAASCLIMIT3)UNION(SELECT*FROMtable1ORDERBYFieldBDESC)有效,excpet忽略了(FIELDBDESC)的第二个顺序...有人知道为什么吗?谢谢 最佳答案 UNION运算符执行隐式排序作为联合操作的一部分(IIRC,在键列上)。如果您希望在结果中进行其他排序,则必须将ORDERBY应用于联合选择。在您的情况下,您需要某种方式来区分第一个选择和第二个选择,以便您可以

Mysql Order by 子句使用 "FileSort"

我有一个像这样的表结构comment_idprimarykeycomment_contentcomment_authorcomment_author_url当我像这样触发查询时explainSELECT*FROMcommentsORDERBYcomment_id输出结果为idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra1SIMPLEcommentsALLNULLNULLNULLNULL22563Usingfilesort为什么找不到我定义为主键的索引? 最佳答案 不是