草庐IT

query-optimization

全部标签

sql - 在查询中为 'OR' 运算符创建索引

我有一些条件如下的MySQL查询wherefield1=val1orfield2=val2还有一些喜欢wherefieldx=valxandfieldy=valyand(field1=val1orfield2=val2)如何通过创建索引来优化这些查询?我的直觉是为第一个查询为field1和field2创建单独的索引,因为它是一个OR,所以复合索引可能不会有多大用处。对于第二个查询,出于上述原因,我打算再次创建2个索引:fieldx、fieldy、field1和fieldx、fieldy、field2。这个解决方案是否正确?这是一个非常大的表,所以我不能只是通过应用索引和解释查询来进行试

phpmyadmin - 我在 phpmyadmin 中注意到 "Maximal length of created query"有一个 mysqldump 选项吗?

当我尝试重新导入使用mysqldump创建的数据库时,出现服务器已消失的错误。当我从phpmyadmin导出时,我没有收到该错误。我正在尝试使用mysqldump模拟phpmyadmin导出输出。phpmyadmin将“创建查询的最大长度”设置为50000。这在mysqldump命令中转换为什么选项?这是我目前所拥有的:mysqldump-uusername-ppass>backup.sql 最佳答案 这将限制生成的查询的长度。--net-buffer-length5000 关于phpm

java - 聊天服务器 : what's the best(optimized) way to save a conversation log

我正在用java构建一个简单的聊天服务器,用户可以在其中进行私有(private)对话。我想在服务器级别(而不是客户端)保存这些对话,以便我可以将它们作为对话日志服务列出给用户。我还在我的软件中使用MySQL作为数据库。我正在寻找的是一种保存这些对话的优化方式,也是一种稍后列出它们的快速方式。到目前为止,我考虑了2种实现方式。使用MySQL数据库和a)将对话连续保存为文本,但问题是有些对话非常大(很多字符),我可能无法保存整个对话b)连续保存对话的每一行,但是当我想列出整个对话时,这样会出现速度问题将每个对话保存在一个单独的文本文件中,但我担心会出现读/写问题,尤其是当用户(客户)写(

Mysql:什么是碎片表,为什么要对它们运行 OPTIMIZE?

最近我们开始优化一个从未遵循任何标准的数据库。我们想做以下事情。cleanupofunusedtables.optimizingdatatypesandindexes.tuningslowqueries.evaluatingmy.cnfconfigurationswithmysqltuner.plandsimilarones在这个过程中,我遇到了优化碎片表。这个碎片表是什么,这将如何影响功能和性能。为什么我应该在这些表上运行OPTIMIZE...?我相信这根本不会影响功能。如果不对请指正。预先感谢您的回复。问候,乌日 最佳答案 当您

mysql - Sphinx 主/增量索引,sql_query_killlist

我目前正在使用Sphinx为包含20多万条记录的MySQL查询建立索引。我正在使用增量索引来更新主索引并添加所有新记录。不幸的是,对表的所有更改都被删除了。我知道我可以使用sql_query_killlist来获取所有需要删除或更新的文档ID。不幸的是,我不明白这实际上是如何工作的,而且Sphinx的文档没有足够好的例子让我理解。如果我使用下面的例子,我该如何实现killlist?在MySQL中CREATETABLEsph_counter(counter_idINTEGERPRIMARYKEYNOTNULL,max_doc_idINTEGERNOTNULL);在sphinx.conf中

MySQL 查询 : Query All Entries Older Than 1 Year

我正在LibreOffice中为一家非营利性慈善机构构建一个成员(member)数据库,但我没有mysql查询方面的经验,因此非常感谢您的帮助。我正在尝试创建一个查询,以显示成员(member)注册日期字段(PaymentDate)早于当前日期1年的所有记录AND一个bool值另一个字段(AwaitingRenewal)的值为NO。日期采用05/03/85格式。感谢您能给我的任何帮助! 最佳答案 你可以这样做:select*from`members`where`paymentDate`

mysql - 哪个复合索引会使这个简单的 MySQL 查询更快?

哪个复合索引会使这个简单的MySQL查询更快,我将如何创建该复合索引?SELECT*FROM`Table1`WHERE`col1`='145307'AND`col2`='0'ANDcol3NOTIN(130209,130839)ORDERBYcol4DESCLIMIT0,5上面的每一列(col1到col4)已经有一个单独的索引。编辑:SHOWCREATETABLE的结果:CREATETABLE`Table1`( `primaryCol`int(11)NOTNULLAUTO_INCREMENT, `col3`int(11)DEFAULT'0', `col5`varchar(20)COLL

mysql - 条件为 'NOT IN' 的查询太慢

我有一个查询,它从一个表中读取大约342条记录,并检查这些记录是否不存在于另一个具有大约32000条记录的表中。为此,我使用了“NOTIN”条件和什么是使用“NOTIN”条件更快地运行查询的最佳方式,如下所示,这个过程似乎要占用我的一生!SELECTfname,lname,positionFROMemployeesWHEREemployees.idNOTIN(selectprojects.empidwhereprojects.id='BRS213F-013')我到底应该做什么? 最佳答案 如何使用LEFTJOIN,SELECTa.f

PHP SQL防止重复用户名: Catching Exception vs Select Query

这个问题在这里已经有了答案:Howtopreventduplicateusernameswhenpeopleregister?(4个答案)关闭去年。为了防止将重复的用户名输入数据库并通知用户,插入时使用异常捕获还是插入前选择查询更标准/更喜欢?异常捕获:如果我尝试插入用户输入并且用户名已经存在,则SQL数据库将抛出一个违反主键约束的异常。如果发生这种情况,我可以捕获它并做任何事情。选择查询:如果它返回与用户名匹配的任何元组,那么我就不会为插入而烦恼。然后我可以显示错误消息。我想在这里使用异常的主要优点是查询和行数更少(速度更快?)。但是,我认为这不是特例,因为重复项可能经常出现。

sql - 优化查询选择期间

给出下表:Tableeventsidstart_timeend_time有没有快速搜索常量的方法?例如SELECT*FROMeventsWHEREstart_time='2009-02-1816:27:12'我正在使用MySQL。在任何一个字段上都有索引仍然需要检查一个范围。此外,两个字段的索引不会有任何区别(只会使用第一个)。我可以向表中添加字段/索引(因此添加一个包含两个字段信息的索引构造字段是可以接受的)。附言对此的需求来自这个问题:OptimizeSQLthatusesbetweenclause 最佳答案 我的解决方案有一个