草庐IT

query-performance

全部标签

mysql - 了解 MySQL 中 EXPLAIN 的结果

我有两个独立的查询,它们具有相同的输出。现在我想知道哪个更好?查询1:|id|select_type|table|type|possible_keys|key|key_len|ref|rows|Extra||----|-------------|-------|------|---------------|--------|---------|--------|------|----------------------------------------------------||1|SIMPLE|t1|ALL|(null)|(null)|(null)|(null)|9|Usingwh

mysql - Golang db.Query with sql join

我想查询一个问题及其所有答案。以下两个函数工作得很好。问题是我认为这应该在一个函数中通过一个查询来完成。(为简洁起见,我删除了错误检查)。funcQuestionById(idstring)(*Question,error){question:=new(Question)_=db.QueryRow("select*fromquestionwherequestion.id=?",id).Scan(&question.Id,&question.LessonId,&question.Body,&question.Type,)returnquestion,nil}funcAnswersByQu

mysql - 选择具有三个 where 条件的查询较慢,但具有三个 where 条件中的任意两个组合的相同查询很快

我有以下查询:SELECTtable_1.idFROMtable_1LEFTJOINtable_2ON(table_1.id=table_2.id)WHEREtable_1.col_condition_1=0ANDtable_1.col_condition_2NOTIN(3,4)AND(table_2.idisNULLORtable_1.date_col>table_2.date_col)LIMIT5000;我有以下键和索引:table_1.id主键。table_1.col_condition_1上的索引table_1.col_condition_2上的索引table_1.col_co

mysql - LIMIT 1 怎么可能使查询变慢

给定MySQL5.6中的这个表:createtablePlayerSession(idbigintauto_incrementprimarykey,lastActivitydatetimenotnull,player_idbigintnull,...constraintFK4410E05525A98981foreignkey(player_id)referencesPlayer(id))这个查询怎么可能立即返回大约2000行:SELECT*FROMPlayerSessionWHEREplayer_id=....ORDERBYlastActivityDESC但是添加LIMIT1会使它花费

mysql - 什么更好 : joins or multiple sub-select statements as part of one query

性能方面,什么更好?如果我的查询中有3或4个join语句或使用嵌入式select语句作为一个查询的一部分从我的数据库中提取相同的信息? 最佳答案 我会说联接更好,因为:它们更易于阅读。您可以更好地控制是要执行内部、左/右外部联接还是完全外部联接不能轻易滥用连接语句来创建可憎的查询使用联接,查询优化器可以更容易创建快速查询(如果内部选择很简单,结果可能相同,但对于更复杂的东西,联接会起作用更好)。嵌入的select只能模拟left/rightouterjoin。有时您无法使用联接来做某事,在这种情况下(并且只有在那时)您将不得不求助于

php - 大型数据集 : mysql_unbuffered_query with innodb?

基本上我需要对大型数据集进行操作,所以我开始考虑我可以使用mysql_unbuffered_query来不将所有结果加载到RAM中。但我读到,当我获取行时,我无法在同一个表上运行任何其他查询。我想知道如果表是innodb是否仍然如此?Innodb在执行mysql_unbuffered_query时是否使用行级锁定?伪代码是:$q=mysql_unbuffered_query("SELECT*FROMlargeTable");while($r=fetch($q)){if(somecondition)mysql_query("UPDATElargeTableSETfield=someval

PHP/MySQL : Model repeating events in a database but query for date ranges

我正在开发一个(我打算成为的)简单的PHP/MySQL应用程序。作为其中的一部分,我希望能够对重复事件进行建模,但是我需要能够查询两个日期之间发生的所有事件(包括重复事件)。事件只有日期,一天中的时间无关紧要。我一直在研究这个问题并研究了各种方法,包括CalendarRecurring/RepeatingEvents-BestStorageMethod和Repeatingcalendareventsandsomefinalmaths.但是,我在网上找到的支持此功能的任何数据库模式示例似乎只支持查询某一天发生的事件。不支持在一定日期范围内发生的事件。作为一个抽象的例子事件表(具有某种重复

php - 什么是我的查询获得快速结果的好索引?

我有一个从许多表中提取的查询,但速度很慢,我想改进它。SELECTph.phone_call_idASid,ph.call_subjectAScallSubject,ac.account_nameASaccountName,ph.trigger_onAStriggerOn,ph.isAppointment,ph.status,ind.nameASindustry,cc.call_code_nameAScallCode,ac.account_idFROMphone_callsASphINNERJOINaccountsASacONph.account_id=ac.account_idINN

MYSQL Query比较两个查询的结果?

我目前正在为一个网站开发一个搜索功能,该功能可以在数据库中搜索特定动物。假设用户输入rabbit,搜索将通过db并显示rabbit的结果。现在假设用户输入bunny搜索将通过db但不会找到bunny的匹配项。大多数人都知道bunny的意思是rabbit,但数据库并不知道。此时我已经在同一个数据库中实现了一个MySQL同义词库来搜索用户输入的同义词。这意味着如果用户输入bunny,它将显示bunny的同义词列表。在该列表中有单词Rabbit,我试图从那里提取该单词以生成匹配项。此时我有以下内容。"SELECT`engname`FROM`searchtestdb`WHERE`engname

mysql - 代码点火器 : how to avoid db query returns last statement as key value

我在codeigniter中查询结果之前执行了几个查询:$sql_drop_temptable="...blabla...";$sql_prepare="itcreatesatemporarytable;whereIsumuplater...";$sql_summe="selectsec_to_time(sum(time_to_sec(summands)))fromworkday;";$query=$this->db->query($sql_drop_temptable);$query=$this->db->query($sql_prepare);$query=$this->db->q