Questions tagged «query-optimization»

19
计算多列的DISTINCT
有没有更好的方法来执行这样的查询: SELECT COUNT(*) FROM (SELECT DISTINCT DocumentId, DocumentSessionId FROM DocumentOutputItems) AS internalQuery 我需要计算该表中不同项目的数量,但是不同项目超过两列。 我的查询工作正常,但我想知道是否可以仅使用一个查询(而不使用子查询)获得最终结果

7
MySQL索引-最佳做法是什么?
我已经在MySQL数据库上使用索引一段时间了,但是从未正确地了解过它们。通常,我会使用WHERE子句在要搜索或选择的任何字段上添加索引,但有时看起来并不那么黑白。 MySQL索引的最佳做法是什么? 情况/困境示例: 如果一个表有六个列,并且所有列都是可搜索的,那么我应该对它们全部编制索引还是不对它们进行索引? 索引对性能的负面影响是什么? 如果我有一个VARCHAR 2500列,可以从我的网站的某些部分进行搜索,我应该对它进行索引吗?


1
JOIN查询与多个查询
JOIN查询比几个查询快吗?(您运行主查询,然后根据主查询的结果运行许多其他的SELECT) 我问是因为加入它们会使我的应用程序设计复杂化 如果速度更快,谁能大致估算出多少?如果是1.5倍,我不在乎,但是如果是10倍,我想我是。

3
为什么在MongoDB中索引的方向很重要?
引用文档: 创建索引时,与键关联的数字指定索引的方向,因此它应始终为1(升序)或-1(降序)。方向对于单个键索引或随机访问检索都无关紧要,但是如果您要对复合索引进行排序或范围查询,则方向很重要。 但是,我认为没有理由将索引的方向放在复合索引上。有人可以提供进一步的解释(或示例)吗?

8
PostgreSQL LIKE查询性能差异
我已经看到有关LIKE对数据库中特定表的查询的响应时间差异很大。有时,我会在200-400毫秒内获得结果(非常可以接受),但其他时候可能需要多达30秒才能返回结果。 我了解LIKE查询非常耗费资源,但我只是不明白为什么响应时间会有如此大的差异。我已经在该owner1字段上建立了一个btree索引,但是我认为这对LIKE查询没有帮助。有人有主意吗? 示例SQL: SELECT gid, owner1 FORM parcels WHERE owner1 ILIKE '%someones name%' LIMIT 10 我也尝试过: SELECT gid, owner1 FROM parcels WHERE lower(owner1) LIKE lower('%someones name%') LIMIT 10 和: SELECT gid, owner1 FROM parcels WHERE lower(owner1) LIKE lower('someones name%') LIMIT 10 结果相似。 表格行数:约95,000。

9
PostgreSQL-获取具有列最大值的行
我正在处理一个Postgres表(称为“ lives”),该表包含带有time_stamp,usr_id,transaction_id和live_remaining列的记录。我需要一个查询,该查询将为我提供每个usr_id的最新live_remaining总数 有多个用户(与usr_id不同) time_stamp不是唯一的标识符:有时,用户事件(表中的每一行)将使用相同的time_stamp发生。 trans_id仅在很小的时间范围内才是唯一的:随着时间的流逝,它会重复 (对于给定的用户)剩余的生存时间可以随着时间增加和减少 例: time_stamp | lives_remaining | usr_id | trans_id ----------------------------------------- 07:00 | 1 | 1 | 1个 09:00 | 4 | 2 | 2 10:00 | 2 | 3 | 3 10:00 | 1 | 2 | 4 11:00 | 4 | 1 | 5 …

6
如何在MySQL中执行递归SELECT查询?
我得到一张下表: col1 | col2 | col3 -----+------+------- 1 | a | 5 5 | d | 3 3 | k | 7 6 | o | 2 2 | 0 | 8 如果用户搜索“ 1”,程序将查看col1具有“ 1”的,然后它将在col3“ 5”中得到一个值,然后程序将继续在其中搜索“ 5”,col1并且将得到“ 3”在中col3,依此类推。因此它将打印出: 1 | a | 5 5 | d | 3 3 | …

4
MySQL JOIN与LEFT JOIN的区别
我有这个跨数据库查询... SELECT `DM_Server`.`Jobs`.*, `DM_Server`.servers.Description AS server, digital_inventory.params, products.products_id, products.products_pdfupload, customers.customers_firstname, customers.customers_lastname FROM `DM_Server`.`Jobs` INNER JOIN `DM_Server`.servers ON servers.ServerID = Jobs.Jobs_ServerID JOIN `cpod_live`.`digital_inventory` ON digital_inventory.jobname = Jobs.Jobs_Name JOIN `cpod_live`.`products` ON products.products_pdfupload = CONCAT(digital_inventory.jobname, ".pdf") JOIN `cpod_live`.`customers` ON customers.customers_id = products.cID ORDER BY `DM_Server`.`Jobs`.Jobs_StartTime DESC LIMIT 50 运行良好,直到我让他们LEFT JOIN。我认为通过不指定联接类型可以认为是LEFT JOIN。不是这样吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.