草庐IT

OPTIMIZATION

全部标签

mysql - 什么时候最好不要使用 inner join?

我有两个表:table1(id,name,connte)table2(id,name,connte)它们通过table1.connte和table2.connte连接。每条记录包含100条记录。现在,如果我想从表1中删除一条id=20的记录及其在表2中的相应子项,是否最好执行以下操作:DELETEd1,d2FROMtable1d1INNERJOINtable2d2ONd1.connte=d2.connteWHEREd1.id=20或以下内容:selectconntefromtable1whereid=20--Storeconnteinavariablesayaabc--deletefr

sql - 带有 TEXT 列的 MySQL 表

我一直在处理数据库,我必须处理文本字段。现在,我相信我已经看到一些地方提到最好将TEXT列与表的其余部分隔离(将其放在自己的表中)。但是,现在我在任何地方都找不到这个引用,因为它是很久以前的事了,我开始认为我可能误解了这个信息。一些研究表明this,表明Separatetext/blobsfrommetadata,don'tputtext/blobsinresultsifyoudon'tneedthem.但是,我不熟悉这里使用的“元数据”的定义。所以我想知道将TEXT列放在它自己的表中是否有任何相关优势。将它与其他字段一起使用有哪些潜在问题?以及将其保存在单独的表中的潜在问题?这个表(

sql - 如何优化数据库中的查询-基础知识

似乎所有有关此主题的问题都是非常具体的,尽管我重视特定的示例,但我对SQL优化的基础很感兴趣。我对使用SQL感到很舒服,并且具有硬件/低级软件的背景。我想要的是既有形的软件工具,又是查看我定期查看的mysql数据库并知道join语句的顺序和where语句之间的区别的方法。我想知道为什么索引有帮助,确切地说是为什么。我想特别地知道发生了什么变化,并且我想知道我如何才能真正看到正在发生的事情。我不需要工具来破坏SQL的每一步,我只想能够四处摸索,如果有人不能告诉我要索引哪一列,我将可以拿出一张纸,在一段时间内就能提出答案。数据库很复杂,但并不那么复杂,并且必须有一些很好的资料来学习基础知识

sql - MySQL更新花费(太)长的时间

在我们的服务出现一些预期的增长之后,突然间一些更新花费了非常长的时间,这些过去非常快,直到表达到大约2MM记录,现在它们每个需要大约40-60秒。updatetable1setfield1=field1+1whereid=2229230;QueryOK,0rowsaffected(42.31sec)Rowsmatched:1Changed:0Warnings:0字段类型如下:`id`bigint(20)NOTNULLauto_increment,`field1`int(11)default'0',分析结果,对于上下文切换,这是唯一一个似乎在结果上有很高数字的:mysql>showpro

SQL 查询 : inner joins optimization between big tables

我在MySQL4.x数据库中有以下3个表:主机:(300.000条记录)id(UNSIGNEDINT)主键姓名(VARCHAR100)路径:(6.000.000条记录)id(UNSIGNEDINT)主键姓名(VARCHAR100)网址:(7.000.000条记录)host(UNSIGNEDINT)PRIMARYKEYpath(UNSIGNEDINT)PRIMARYKEY如您所见,架构非常简单,但问题在于这些表中的数据量。这是我正在运行的查询:SELECTCONCAT(H.name,P.name)FROMhostsASHINNERJOINurlsasUONH.id=U.hostINNER

mysql - Query中Group by的奇怪行为需要优化

谁能帮我优化这个查询SELECT`debit_side`.`account_code`CODE,GROUP_CONCAT(DISTINCTaccounts.name)ASDebitAccount,GROUP_CONCAT(debit_side.amount)ASDebitAmount,GROUP_CONCAT(transaction_info.voucher_date)ASDebitVoucherDate,(SELECTGROUP_CONCAT(DISTINCTaccounts.name)FROM(accounts)LEFTJOINdebit_sideONaccounts.code=d

时间戳列上的 MySQL 索引不用于大日期范围

我有表+-------------------+----------------+------+-----+---------------------+-----------------------------+|Field|Type|Null|Key|Default|Extra|+-------------------+----------------+------+-----+---------------------+-----------------------------+|id|bigint(20)|NO|PRI|NULL|auto_increment||runtime_i

mysql - 很多mysql Sleep进程

我的mysql服务器仍然有问题。似乎自从我对其进行优化后,表格就在增长,现在有时又变得非常慢了。我不知道如何优化更多。mySQL服务器有48GBRAM,mysqld使用了大约8GB,大部分表都是innoDB。网站有大约2000名在线用户。我还对每个查询运行解释,并且每个查询都已编入索引。mySQL进程:http://www.pik.ba/mysqlStanje.php我的.cnf:#TheMySQLdatabaseserverconfigurationfile.##Youcancopythistooneof:#-"/etc/mysql/my.cnf"tosetglobaloptions

使用子选择的 MySQL 查询选择花费的时间太长

我在从2个表中执行选择时注意到一些奇怪的事情:SELECT*FROMtable_1WHEREidIN(SELECTid_elementFROMtable_2WHEREcolumn_2=3103);这个查询大约用了242秒。但是当我执行子查询时SELECTid_elementFROMtable_2WHEREcolumn_2=3103用时不到0.002秒(结果是2行)。然后,当我做SELECT*FROMtable_1WHEREidIN(/*prev.result*/)相同:0.002s。我想知道为什么MySQL会像这样执行第一个查询,比单独的最后两个查询花费更多的时间?它是基于子查询结果选

mysql - 在 MySQL 中重置 AUTO_INCREMENT 需要很长时间

ALTERTABLEtablenameAUTO_INCREMENT=10000000此查询需要很长时间才能更新。为什么?我需要优化这个查询。 最佳答案 ALTERTABLE会导致整个表的重建-如果您的表包含很多行,这可能需要很长时间。如果您只需要提高auto_increment值的值,最快的方法是插入一个虚拟行(然后在需要时删除该行)。这只需要几分之一秒,而ALTERTABLE对于大表可能需要几天时间。例如,假设我有一个表,其中有一个auto_incrementID列和其他列col1、col2...:insertintoautoin