草庐IT

rand_row

全部标签

php - MySQL/PDO FOUND_ROWS() 有时错误地返回 0

我们有一个以前在PHP5.4下运行的laravel4.1应用程序,但是自从升级到5.6.13(今天升级到5.6.14)后,我注意到查询开始有时会返回0以获取FOUND_ROWS()。在我们的一些查询中,它似乎是断断续续的,但在其他查询中,它更像是一个永久性问题。受影响最大的集合是带有子查询的集合。我们正在使用PDO(我们没有使用laravel模型,只是直接与其PDO对象交互)。MySQL在这个时间范围内也没有被修改过。尝试了各种方法-一个建议是将跟踪模式设置为0,但这并没有帮助。我尝试将PDO::MYSQL_ATTR_USE_BUFFERED_QUERY设置为false,但是当您尝试选

mysql - 按值分组 RAND()

有可能得到分组的随机值吗?----------------nID|val---------------A|XXXA|YYYB|LB|MB|NB|P----------------使用这条SQL:SELECTnID,VALFROMT1GROUPBYnID我的结果总是:nIDval--------AXXXBL但我想要每个nID的不同结果。喜欢:nIDval--------AYYYBN或nIDval--------AXXXBP有可能吗?http://sqlfiddle.com/#!2/357b8/3 最佳答案 使用子查询。SELECTr.

mysql - 按值分组 RAND()

有可能得到分组的随机值吗?----------------nID|val---------------A|XXXA|YYYB|LB|MB|NB|P----------------使用这条SQL:SELECTnID,VALFROMT1GROUPBYnID我的结果总是:nIDval--------AXXXBL但我想要每个nID的不同结果。喜欢:nIDval--------AYYYBN或nIDval--------AXXXBP有可能吗?http://sqlfiddle.com/#!2/357b8/3 最佳答案 使用子查询。SELECTr.

MySql 查询 : Select top 3 rows from table for each category

我有一个包含记录的表,它有一个名为category的行。我插入了太多文章,我只想从每个类别中选择两篇文章。我试图做这样的事情:我创建了一个View:CREATEVIEWlimitrowsASSELECT*FROMtbl_artikujtORDERBYarticleidDESCLIMIT2然后我创建了这个查询:SELECT*FROMtbl_artikujtWHEREartikullidIN(SELECTartikullidFROMlimitrowsORDERBYcategoryDESC)ORDERBYcategoryDESC;但这不起作用,只给我两条记录? 最

MySql 查询 : Select top 3 rows from table for each category

我有一个包含记录的表,它有一个名为category的行。我插入了太多文章,我只想从每个类别中选择两篇文章。我试图做这样的事情:我创建了一个View:CREATEVIEWlimitrowsASSELECT*FROMtbl_artikujtORDERBYarticleidDESCLIMIT2然后我创建了这个查询:SELECT*FROMtbl_artikujtWHEREartikullidIN(SELECTartikullidFROMlimitrowsORDERBYcategoryDESC)ORDERBYcategoryDESC;但这不起作用,只给我两条记录? 最

Mysql SQL_CALC_FOUND_ROWS 和分页

所以我有一个表,其中有超过500万行。当我使用SQL_CALC_FOUND_ROWS时,查询永远挂起。当我把它拿出来时,查询在一秒钟内执行,限制为25。我的问题是出于分页原因,是否有替代方法来获取总行数? 最佳答案 SQL_CALC_FOUND_ROWS强制MySQL扫描所有匹配的行,即使它们永远不会被获取。在内部,它相当于在没有LIMIT子句的情况下执行相同的查询。如果您通过WHERE进行的过滤不是太疯狂,您可以计算并缓存各种类型的过滤器以节省calc_found_rows施加的全扫描负载。对于大多数可能的where子句,基本上运

Mysql SQL_CALC_FOUND_ROWS 和分页

所以我有一个表,其中有超过500万行。当我使用SQL_CALC_FOUND_ROWS时,查询永远挂起。当我把它拿出来时,查询在一秒钟内执行,限制为25。我的问题是出于分页原因,是否有替代方法来获取总行数? 最佳答案 SQL_CALC_FOUND_ROWS强制MySQL扫描所有匹配的行,即使它们永远不会被获取。在内部,它相当于在没有LIMIT子句的情况下执行相同的查询。如果您通过WHERE进行的过滤不是太疯狂,您可以计算并缓存各种类型的过滤器以节省calc_found_rows施加的全扫描负载。对于大多数可能的where子句,基本上运

php - MySQL 选择随机行 - rand() 性能

这个问题在这里已经有了答案:MySQLselect10randomrowsfrom600Krowsfast(28个回答)关闭9年前.与其他解决方案相比,ORDERBYrand()性能真的很慢吗?如果是,从数据库中选择随机行的更好方法是什么?我的查询:SELECTsNameFROMbpointWHEREplaceID=?ORDERBYrand()LIMIT1; 最佳答案 是的,ORDERBYRAND()在较大的结果集中可能会非常慢。一个选项是用这个语句获取结果集(到一个数组中):SELECTsNameFROMbpointWHEREpl

php - MySQL 选择随机行 - rand() 性能

这个问题在这里已经有了答案:MySQLselect10randomrowsfrom600Krowsfast(28个回答)关闭9年前.与其他解决方案相比,ORDERBYrand()性能真的很慢吗?如果是,从数据库中选择随机行的更好方法是什么?我的查询:SELECTsNameFROMbpointWHEREplaceID=?ORDERBYrand()LIMIT1; 最佳答案 是的,ORDERBYRAND()在较大的结果集中可能会非常慢。一个选项是用这个语句获取结果集(到一个数组中):SELECTsNameFROMbpointWHEREpl

MySQL row_format 压缩与动态

出于以下原因,我已将“innodb_file_format”从“Antelope”更改为“Barracuda”。避免行大小限制避免列索引大小限制在更改文件格式时,我选择“row_format”作为“动态”。这工作正常。但是,我想将“row_format”从“动态”更改为“压缩”以进行数据压缩。谁能告诉我row_format是否与COLUMNINDEXES和DATAINSERTS到表中有关?如果是,推荐哪个?为什么?压缩格式会导致性能下降吗? 最佳答案 使用DYNAMIC或COMPRESSED意味着InnoDB存储不适合页面的varc