草庐IT

mysql - 大表上的慢 MySQL SELECT

我有一个表,用于存储2周内每15分钟约35,000件商品的价格随时间推移的价格。它大致相当于表中约3500万行。我正在尝试执行最简单的查询:SELECTbuy_price,sell_price,created_atFROMprice_archiveWHEREitem_id=X该查询的第一次未缓存运行大约需要4-7秒才能返回约1300行(每个项目)。对于数据库来说如此微不足道的事情,这似乎慢得离谱,尤其是考虑到item_id列上有索引。该表每15分钟插入35,000行,每天都会运行一个任务来删除created_at上进行分区以删除旧数据是否会更好?1306rowsinset(8.32se

mysql - 在 mysql 存储函数内的 SELECT 语句中使用变量作为 OFFSET

我对为mySQL数据库编写存储函数的主题还很陌生,因此我不确定我在这里尝试做的事情是否可行。我需要一个函数,该函数将从表的随机行中返回一列。我不想使用ORDERBYRAND()方法来做到这一点,而是我会这样做:DECLAREMAX_COUNTINTDEFAULT120000;DECLARErand_offsetINT;DECLAREstr_rnd_wordVARCHAR(255);SETrand_offset=FLOOR((RAND()*MAX_COUNT));SELECTwordINTOstr_rnd_wordFROMall_wordsLIMIT1OFFSETrand_offset;

php - SQL查询,什么是 `SELECT * FROM !.tables WHERE id = !`

我以前从未见过这样的SQL:SELECT*FROM!.tablesWHEREid=!它在做什么? 最佳答案 它看起来像一个参数化查询,但我从未见过感叹号被用作占位符。正在运行查询的库是什么? 关于php-SQL查询,什么是`SELECT*FROM!.tablesWHEREid=!`,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2836059/

mysql - 有没有办法在(列表)中包含来自 MySQL 查询 : select. .from..where..id 的重复项

我正在尝试获取查询类型的结果SELECT*FROMtableWHEREidIN(2,4,6,1,1,2)ORDERBYfield(id,2,4,6,1,1,2)并且我想以与列表相同的顺序获得结果,包括:重复项。上面的查询保留了顺序但删除了重复项。我知道我可以对结果进行后处理,但只是想知道是否有更简单的方法。谢谢 最佳答案 这实际上会实现你想要的:SELECT*FROMtableinnerjoin(select1assort,2asvalueunionallselect2,4unionallselect3,6unionallselec

java - JDBC:使用流从远程 MySQL 数据库导出/导入 CSV 原始数据(SELECT INTO OUTFILE/LOAD DATA INFILE)

我目前正在开发的Web应用程序支持CSV导出(使用SELECTINTOOUTFILE)和导入(使用LOADDATAINFILE)MySQL服务器以维护庞大的数据集,这些数据集使用SELECT和批量INSERT语句进行处理非常昂贵在Java代码中(处理结果集、字符串编码内容、业务逻辑继承等)。这些CSV文件不是应用程序驱动的,因此它们只是代表来自MySQL数据库的原始表内容。但据我所知,这种方法只有在我有本地文件时才有用,因此Web应用程序服务器和mysqld必须在同一台机器上运行。应用程序配置可以指定一个远程数据库连接。这显然意味着上传的CSV文件存储在运行Web应用程序的机器的本地某

mysql select 查询给出 ID(数字)等于文本的结果

我有一个表_users,其字段id为bigint(24)。这个查询的结果:SELECT*FROM`_users`WHERE`id`='5text'是id=5的行。我预计不会有结果,因为'5text'不是数字。这怎么可能? 最佳答案 MySQL在计算表达式以使操作数兼容时隐式地将字符串转换为数字。来自文档:Ifoneoftheargumentsisadecimalvalue,comparisondependsontheotherargument.Theargumentsarecomparedasdecimalvaluesiftheot

mysql - Yii2 find()/QueryBuilder 中带 WHERE 条件的 SELECT 子查询

我能够找到构建子查询的简单示例,但是当我需要包含WHERE条件时,我无法弄清楚也找不到解决方案。我正在尝试模拟以下语句...SELECTParentTable.*,(SELECTMAX(ChildTable.NumberField)FROMChildTableWHEREChildTable.FK_Id=ParentTable.Id)FROMParentTable我猜我需要类似...$query=ParentClass::find()->addSelect(ChildClass::find()->where('childTable.fk_id=parentTable.id')->max(

sql - 在 select 语句中更新表

有什么方法可以更新mysql选择查询的select_expr部分中的表。这是我要实现的目标的示例:SELECTid,name,(UPDATEtbl2SETcurrname=tbl.nameWHEREtbl2.id=tbl.id)FROMtbl;这让我在mysql中出错,但我不明白为什么只要我不更改tbl就不可能这样做。编辑:我将澄清为什么我不能为此使用普通结构。这是我正在处理的问题的更复杂示例:SELECTid,(SELECT@var=col1FROMtbl2),@var:=@var+1,(UPDATEtbl2SETcol1=@var)FROMtblWHERE...所以我基本上处于这样

sql - Select * from tbl where id>=5/* 然后将 id<5 的结果添加到查询 */

我有一个包含9行的表格。$id=5如果我使用SELECT*FROMtblWHEREid>=$id我得到5、6、7、8、9行。对于此查询,我想添加SELECT*FROMtblWHEREid的结果所以我将得到最后的5、6、7、8、9、1、2、3、4行。这是为了避免在数据库中访问两次然后将结果集添加到php中。编辑:是的,顺序很重要。谢谢你们的快速react。感谢@knittl(接受的答案)和@Swanand提供最佳答案。 最佳答案 你想要所有行吗?如果顺序是您要查找的顺序,请对结果集进行排序:SELECT*FROMtblORDERBYi

sql - Select * sql query vs Select specific columns sql query

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:WhyisSELECT*consideredharmful?可能是一个数据库nOOb问题。我们的应用程序有一个如下表表WFField|Type|Null|Key|Default|Extra|+--------------------+-------------+------+-----+---------+----------------+|id|int(11)|NO|PRI|NULL|auto_increment||children|text|YES||NULL|||w_id|int(11)|YES||NU