草庐IT

CREATED_BY

全部标签

mysql - 为什么 ORDER BY 不使用索引?

这是我的表格:CREATETABLE`person`(`id`bigint(10)NOTNULLAUTO_INCREMENT,`name`varchar(20)DEFAULTNULL,`age`int(10)NOTNULLDEFAULT'0',PRIMARYKEY(`id`),KEY`age`(`age`))ENGINE=InnoDBAUTO_INCREMENT=10000DEFAULTCHARSET=latin1;这是解释的输出:mysql>explainselect*frompersonorderbyage\G***************************1.row****

php - 我的 sql 查询使用 GROUP BY 函数获取中间行值

我的数据库结构是这样的IdPriceCode10.129320.139330.549340.969350.109460.309470.909481.409492.3094我必须使用代码分组来获取数据,并且我希望将中间行作为输出。在上面的示例中,我希望输出为IdPriceCode30.549370.9094以上是我想要的输出,中间行或具有最大价格的行(如果有两个中间行,例如行数为4、6、8的情况) 最佳答案 可以通过一些技巧来实现。SELECTid,price,codeFROMtable1WHEREidIN(SELECTCeil(Av

mysql - 添加 JOIN 和 ORDER BY 查询后性能意外提升

我有以下People表:|Id|FirstName|Children||----|-----------|----------||1|mark|4||2|paul|0||3|mike|3|请注意,我在FirstName中有一个非唯一索引,在Children中有另一个索引。我需要获得每个有child的人的前10000个名字和child数量。所以我决定采用这种解决方案:SELECTfirstName,childrenFROMpeopleWHEREchildren>0ORDERBYchildrenDESCLIMIT0,10000问题是从一个有260万条记录的表中返回结果需要4秒。这是解释:|

php - Magento group by 日期字段的子句

我需要获取指定月份一天内“grand_total”的订单总数、SUM、MINMAX和AVG。这就是我正在做的。$collection->getSelect()->columns('SUM(base_grand_total)AStotal')->columns('COUNT(*)ASorders_count')->columns('DATE_FORMAT(created_at,"%d")ASorder_day')->columns('DATE_FORMAT(created_at,"%d/%m/%y")ASorder_date')->columns('AVG(base_grand_tota

mysql - 使用 2 个连接和 group by 子句优化 mysql 查询

我有一个需要10-20秒的查询,但我确信它可以优化,我只是不够好。我需要一些帮助和解释,以便我可以将其应用于类似的查询。这是我的查询:SELECT`store_formats`.`StoreNbr`,`store_formats`.`StoreName`,`store_formats`.`FormatName`,`eds_sales`.`Date`,sum(`eds_sales`.`EPOSSales`)ASSales,sum(`eds_sales`.`EPOSQuantity`)ASQuantityFROM`eds_sales`INNERJOIN`item_codes`ON`eds_

php - 基于 mySQL 中的 COUNT() 值限制 GROUP BY

我正在将事件记录到mySQL数据库中,并希望获取前3个事件以用于监控目的。我的表eventlog如下所示:+----+------------------+---------------------+|id|eventname|eventdate|+----+------------------+---------------------+|0|machine1.started|2016-09-0419:22:23||1|machine2.reboot|2016-09-0420:23:11||2|machine1.stopped|2016-09-0420:24:12||3|machin

mysql - 如何将 CASE 语句放在 GROUP BY 子句中

我有一个表,其中有一列是用逗号分隔的可能值列表。我想查询,按每个可能的值分组。作为测试,我编写了这个查询:SELECT`Please_identify_which_of_the_following_classroom_hardware_you_c2`,count(`_How_would_you_rate_your_overall_skill_in_using_educational_tec1`)ascount,`_How_would_you_rate_your_overall_skill_in_using_educational_tec1`FROM`data_Copy_of_Facul

mysql group by query with column filter

我有一个mysql表,其中包含下面提到的C1、C2和C3列数据。表格数据如下(保密的虚拟数据)。我想要一个mysql查询,它将按c1降序返回所有C1列的计数(首先获得最大计数C1),其中C1的最大计数desc和C2数据重复了最大次数,与C3相同。C1C2C3XAUXAUXBVYHKYHKYHKZFRZFPZGPZFR输出应采用以下格式。CountC1C2C34ZFP3YHK3XAU我能够在同一查询中获取计数,但不能获取C2、C3的最大重复值。 最佳答案 你可以尝试使用select子查询来实现。查询1:SELECTCOUNT(*),C

mysql - ORDER BY RAND() 似乎不那么随机

我有一个相当简单的SQL(MySQL):SELECTfooFROMbarORDERBYrank,RAND()我注意到当我刷新结果时,随机性很弱。目前样本数据中有六个排名相同的结果(整数零)。有很多随机性测试,但这里有一个简单的手动测试:运行两次时,两次运行的第一个结果应该相同,大约有六分之一的时间。这肯定不会发生,领先的结果至少有三分之一的时间是相同的。我想要对排列进行均匀分布。我不是专家统计学家,但我很确定ORDERBYRAND()应该可以做到这一点。我错过了什么?对于MySQL,SELECTrand(),rand()显示两个不同的数字,所以我不相信“每个查询一次”的解释

mysql - 在 MySql "order by"子句中高效地进行数学运算?

有人多次告诉我,使用数学进行SELECT非常有效,而在WHERE子句中使用数学并不是很有效。这些观点是否正确?这如何应用于ORDERBY子句?谢谢!!示例:SELECTa.*FROMaORDERBY(a.field_1*a.field_2) 最佳答案 如果结果大于sort_buffer_size,您的查询将不得不使用磁盘上的临时文件对整个表进行排序。您可能想在表中添加一列来保存字段1*字段2的值。这当然会使您的数据稍微反规范化,但您可以在现场创建索引。如果你在新字段上有一个索引,那么MySQL可以读取使用索引预先排序的数据,因为My