草庐IT

query_profile_update_insert

全部标签

mysql - 网站攻略 : A question about how many SQL queries are enough

我最近开始公开并慢慢推出一个自制的CMS。该站点允许进行大量自定义,并朝着国际化和自定义的方向发展,达到不需要源代码的水平。这是一个个人项目,整个目的是看看我能把自己的编程限制推到多远(处理博客、网络漫画和小型论坛的CMS的分发问题不是我愿意的)考虑一下,直到我清理它并对其进行更多的工作-同样,鉴于它是一个业余项目,我怀疑它与其他更精致的项目相比是否有任何引力......但这些不是关注的主题手头的话题。)我编写了一系列代码,可以查看每个页面的生成速度和运行的查询次数;平均而言,我看到每页执行9-13,最多12个MySQL查询。生成页面的平均时间在10-20毫秒之间。现在,在没有任何专业

通过主键进行的 MySQL UPDATE 查询有时非常慢

我们网站上的特定UPDATE查询有时会运行得非常慢,并且会检查比必要的多得多的行。它按主键过滤,所以我希望MySQL总是只需要检查一行。以下是MySQL的慢查询日志中的一些示例:#Time:09070212:59:06#User@Host:XXX[XXX]@XXX[XXX]#Query_time:21Lock_time:0Rows_sent:0Rows_examined:500500SETtimestamp=1246532346;UPDATE`folders`SET`folder_id`='1705641',`updated_at`=now()WHERE`folders`.`id`='

MySQL UPDATE 语句批处理以避免大量 TRX 大小

我经常编写更新数百万行数据的数据清理。数据驻留在使用InnoDB的24x7x365OLTPMySQL数据库中。更新可能会清理表的每一行(其中DB最终获得表级锁)或者可能只是清理表中10%的行(可能仍为数百万)。为了避免创建大量事务并最大程度地减少争用,我通常最终会尝试将我的一个大型UPDATE语句分解为一系列较小的UPDATE事务。所以我最终写了一个循环结构来限制我的UPDATE的WHERE子句,如下所示:(警告:这只是为了说明问题的伪代码)@batch_size=10000;@max_primary_key_value=selectmax(pk)fromtable1for(inti=

php - 嵌套的 mysql_query() - 重置第一个结果的指针?

我有一个friend在用FluxBB,他刚刚安装了这个论坛软件的修改版。viewtopic.php文件有一个while循环,它在结果对象上执行mysql_fetch_assoc()。在此循环内,第二个结果对象上有第二个mysql_fetch_assoc()。嵌套while循环的原因是帖子很多,每个帖子HasManythank-you's。这里有一些代码可以更好地说明我的意思:$result=mysql_query("some-query");while($cur_post=mysql_fetch_assoc($result)){//Foreverypost,executethissec

MySQL 性能 : nested insert/duplicate key vs multiple updates

有谁知道什么会更有效并使用更少的资源:方法1--使用单个SELECT语句从一个表中获取数据,然后遍历它以对另一个表执行多个UPDATE。例如。(伪代码,execute()运行查询):Query1_resultset=execute("SELECTitem_id,sum(views)asview_countFROMtableAWHEREcondition=1");while(Query1_resultsetasrow){execute("UPDATEtableBSETview_count=row.view_countWHEREid=row.item_id");}方法2--使用单个INSE

mysql - MySQL 可以在 UPDATE 中进行正则表达式替换吗?

我见过使用REGEXP运算符进行匹配的MySQLSELECT示例。有没有办法在UPDATE中进行正则表达式替换?如果不是,对列中的所有值运行正则表达式替换的最简单方法是什么?请随意建议使用任何编程语言或正则表达式实现。 最佳答案 基本上,没有。您可以使用一些繁琐的REPLACE()调用,在支持正则表达式替换的脚本中创建UPDATE语句,或者使用一些UDF,thisoneforinstance 关于mysql-MySQL可以在UPDATE中进行正则表达式替换吗?,我们在StackOverf

php - mysqli_query 返回 false,错误代码为 0,但查询成功

我有大量数据是从PHP脚本生成的,需要插入到数据库中。我尝试了各种不同的解决方案,但目前的解决方案(我认为应该是最好的解决方案)是我将数据生成到一个CSV文件中,然后使用以下查询将其插入到数据库中:LOADDATALOCALINFILE'myfile.csv'INTOTABLEt1FIELDSTERMINATEDBY','OPTIONALLYENCLOSEDBY"'"我使用CodeIgniter作为PHP框架,在执行查询后我被重定向到一个错误页面,该页面只显示ADatabaseErrorOccurredErrorNumber:0没有错误信息或任何东西。我已经遍历了代码,但我所能找到的只

mysql - information_schema 表和 update_time 行为

我想对information_schema及其行为进行一些解释。假设我想知道myisam表何时被修改。我写这个查询selectupdate_timefrominformation_schema.tableswheretable_schema='my_db'andtable_name='my_table'即使我对我的表应用了一些更改,但在我运行flushtables之前,它什么也没有发生。不幸的是,在我看来update_time存储了我运行刷新表的那一刻的日期和时间,而不是真正发生表更改的那一刻。是真的吗?提前致谢。 最佳答案 我个人

php - 将包含 mysql 函数的 mysql 查询传递给 PHP mysql_query

我有这个代码DELIMITER$$DROPFUNCTIONIFEXISTS`GetNextID`$$CREATEFUNCTION`GetNextID`()RETURNSINTDETERMINISTICBEGINDECLARENextIDINT;SELECTMAX(articleID)+5INTONextIDFROMtable_article;RETURNNextID;END$$DELIMITER;INSERTINTOtable_article(articleID,articleAlias)VALUES(GetNextID(),'TEST');在phpMyAdmin中执行正常,但当我将此

mysql - 如何在 MySQL 中使用 LAST_INSERT_ID 关键字传递表名?

如何以表名作为参数在MySQL中查找最后一个标识插入值?当我使用LAST_INSERT_ID()关键字时,我无法获取表名。 最佳答案 确实,你不能那样做。我建议您在应用程序级别使用它-在PHP/Python/Ruby/Perl等中 关于mysql-如何在MySQL中使用LAST_INSERT_ID关键字传递表名?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6172207/