标签: query-optimization

在生产服务器中分析asp.net网站的可能方法?

我在我的生产服务器上运行了一个asp.net网站.我想获得在生产服务器中分析asp.net网站的可能方法,因为我的应用程序非常慢?正如我所说的慢,我不是指静态内容的传递,而是数据库操作和我的c#代码?那有什么建议吗?

asp.net performance profiling query-optimization production-environment

2
推荐指数
1
解决办法
1986
查看次数

什么时候限制SQL Server 2005中的连接是有利的?

例如,假设您有这样的查询:

SELECT *
FROM table1 t1
JOIN table2 t2 ON t1.field1 = t2.field1 AND t1.year = t2.year
JOIN table3 t3 ON t1.field1 = t3.field1 AND t1.year = t3.year
JOIN table4 t4 ON t3.field2 = t4.field2 AND t3.year = t4.year
WHERE t1.year = '2010'
Run Code Online (Sandbox Code Playgroud)

这样做更快:

SELECT *
FROM table1 t1
JOIN table2 t2 ON t1.field1 = t2.field1 AND t1.year = t2.year AND t2.year = '2010'
JOIN table3 t3 ON t1.field1 = t3.field1 AND t1.year = t3.year AND t3.year = '2010'
JOIN …
Run Code Online (Sandbox Code Playgroud)

sql sql-server join constraints query-optimization

2
推荐指数
1
解决办法
255
查看次数

使用MySQL进行快速交叉表更新

简单的问题:D.我知道该怎么做,但我必须快速完成.

什么是最有效的方法?

场景:两个表,tableA并且tableB,更新tableA.columnAtableB.columnB基础上tableA.primarykey = tableB.primarykey.

问题:tableAtableB各超过10.000.000纪录.

mysql sql query-optimization sql-update

2
推荐指数
1
解决办法
2074
查看次数

Android sqlite和多个查询

为了填充我的数据库,我有一些这样的循环:

for (int i=0;i<something;++i){
   myDatabase.insert(...);
}
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时,需要很长时间.所以我想知道如何改善运行时?我试着只打一次这样的插入:

String queries="";
for (int i=0;i<something;++i){
   queries += "my query;";
}
myDatabse.execSQL(queries);
Run Code Online (Sandbox Code Playgroud)

但execSQL函数只插入第一个查询,而不插入其他查询.那我该怎么办?

sqlite android query-optimization

2
推荐指数
1
解决办法
3582
查看次数

使用PHP优化MySQL查询

我们假设我有以下查询:

SELECT地址
FROM地址a,名称n
WHERE a.address_id = n.address_id
GROUP BY n.address_id
HAVING COUNT(*)> = 10

如果这两个表足够大(想想我们在这两个表中是否有整个美国人口)那么在这个SELECT上运行一个EXPLAIN会说Using temporary; Using filesort这通常不好.

如果我们有一个包含许多并发INSERT和SELECT的DB(如此),那么将该GROUP BY a.address_id HAVING COUNT(*) >= 10部分委托给PHP是一个很好的计划来最小化数据库资源?对此进行编码最有效的方法(就计算能力而言)是什么?

编辑:似乎共识是卸载到PHP是错误的举动.那怎么样,我可以改进查询(让我们假设索引已经正确创建)?更详细地说,如何避免DB创建临时表?

php mysql query-optimization

2
推荐指数
1
解决办法
1128
查看次数

为什么Wordpress具有单独的"usersmeta"和"用户"SQL表.为什么不结合它们?

除了users表,Wordpress还有一个包含以下列的usersmeta表

  • meta_id
  • 用户身份
  • meta_key(例如first_name)
  • meta_value(例如汤姆)

无论行是否具有填充的meta_value,每个用户在usersmeta表中都有20行.也就是说,将始终存在的元行添加到users表中会不会更有效率?

我猜测更频繁地查询users表中的信息(例如user_id,username,pass),因此将这些行保持较小的效率更高.这是真的?表格分离还有其他原因吗?

sql wordpress query-optimization

2
推荐指数
1
解决办法
947
查看次数

Django另一个优化保存()

在我的应用程序中优化查询的过程中,我发现了一些奇怪的东西 在代码的给定部分中,我将获得对象,更新一些值,然后保存.从理论上讲,这应该执行2个查询.但事实上它执行3个查询.我在获取对象时选择查询,在保存对象时选择2(另一个选择然后更新!).删除一个查询可能看起来很愚蠢.在这个特定的方法中,我正在更新许多对象,因此我保存的每个查询在数据库上的命中率都会降低1,并且应该加快方法的速度

通过检查查询,两个选择查询是不同的,第一个得到很多东西,并且由它执行的选择很简单.

这是示例代码:

            myobject = room.myobjects.get(id=myobject_id) # one query executed here
            myobject.color = color
            myobject.shape = shape
            myobject.place = place
            myobject.save() # two queries executed here
Run Code Online (Sandbox Code Playgroud)

查询:

   1) "SELECT `rooms_object`.`id`, `rooms_object`.`room_id`, ......FROM `rooms_object` WHERE (`rooms_object`.`id` = %s AND `rooms_object`.`room_id` = %s )"

   2) "SELECT (1) AS `a` FROM `rooms_object` WHERE `rooms_object`.`id` = %s LIMIT 1"

   3) "UPDATE ......this ones obvious"
Run Code Online (Sandbox Code Playgroud)

我希望save方法能够识别它已经拥有内存中的对象而且它不需要再次获取它......如果可能的话......

django query-optimization django-models

2
推荐指数
1
解决办法
972
查看次数

为什么/如何使用SQL查询更快?

我在一个表中运行了大约1,300,000条记录的查询.它需要满足某些WHERE条件的某些记录并将它们插入另一个表中.它首先完全清除目标表.

每次执行时,完成查询所需的时间会大大改善:

1st: 5 minutes, 3 seconds
2nd: 2 minutes, 43 seconds
3rd: 12 seconds
4th: 3 seconds
Run Code Online (Sandbox Code Playgroud)

除了点击Execute之外我什么也没做.我的查询看起来像这样(有些缩写用于长度目的):

DELETE FROM dbo.ConsolidatedLogs --clear target table

DECLARE @ClientID int

DECLARE c CURSOR FOR SELECT ClientID FROM dbo.Clients
OPEN c

FETCH NEXT FROM c INTO @ClientID --foreach LogID
WHILE @@FETCH_STATUS = 0
BEGIN

   INSERT INTO dbo.ConsolidatedLogs
        (col1, col2)
        SELECT col1, col2
        FROM dbo.CompleteLogsRaw
        WHERE col3 = true AND
              ClientID = @ClientID

   FETCH NEXT FROM c INTO @ClientID

END
CLOSE c
DEALLOCATE c …
Run Code Online (Sandbox Code Playgroud)

sql sql-server query-optimization

2
推荐指数
1
解决办法
864
查看次数

如何在Symfony2中优化DQL查询?

我有一个名为Abono的实体,它是Check,Efectivo,Debito等其他几个实体的父类.在我的应用程序中,我使用带有这样的DQL语句的存储库类查询Abono类实例的所有对象(代码是真实类型的简化版本):

$dql = "SELECT ab FROM FranquiciaBundle:Abono AS ab";
return $em->createQuery($dql)
          ->getResult();
Run Code Online (Sandbox Code Playgroud)

在我的模板中,我正在显示这样的结果(再次,简化代码):

{% for abono in abonos %}
    <tr>
        <td>{{ abono.id }}</td>
        <td>{{ abono.tipo }}</td>
    </tr>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

我有5000条记录对表和探查告诉我,该应用程序是打如我所料只是一次数据库的5000倍,而不是,所以我改变阙库使用位getArrayResult()代替getResult(),但问题是,这句话{{ abono.tipo }}是一个方法调用对象,而不是存储在数据库中的属性,因此它永远不会被水合到结果数组中.

所以我的问题是,如何让一个对象数组只攻击一次数据库?

UPDATE:getTipo()类Abono 的方法返回每个对象的Late Static Binding类名,它不是关联.

public function getTipo()
{
    $className = get_called_class();
    $pos = strrpos($className,'\\');
    return substr($className, $pos+1);
}
Run Code Online (Sandbox Code Playgroud)

doctrine query-optimization symfony doctrine-orm

2
推荐指数
1
解决办法
1311
查看次数

如何理解避免全表扫描

我有一个表负责存储日志.DDL是这样的:

CREATE TABLE LOG(
    "ID_LOG" NUMBER(12,0) NOT NULL ENABLE, 
    "DATA" DATE NOT NULL ENABLE, 
    "OPERATOR_CODE" VARCHAR2(20 BYTE), 
    "STRUCTURE_CODE" VARCHAR2(20 BYTE), 

     CONSTRAINT "LOG_PK" PRIMARY KEY ("ID_LOG")
 );
Run Code Online (Sandbox Code Playgroud)

有这两个指数:

CREATE INDEX STRUCTURE_CODE ON LOG ("OPERATOR_CODE");

CREATE INDEX LOG_01 ON LOG ("STRUCTURE_CODE", "DATA") ;
Run Code Online (Sandbox Code Playgroud)

但是这个查询产生了一个完整的表扫描:

SELECT log.data AS data1, 
       OPERATOR_CODE,
       STRUCTURE_CODE
  FROM log
 WHERE data BETWEEN to_date('03/03/2008', 'DD-MM-YYYY')
                AND to_date('08/03/2015', 'DD-MM-YYYY')
   AND STRUCTURE_CODE = '1601';
Run Code Online (Sandbox Code Playgroud)

为什么我总是看到一个FULL TABLE SCANDATASTRUCTURE_CODE

(我也试过创建两个不同的索引STRUCTURE_CODE,DATA但我总是进行全表扫描)

sql oracle query-optimization full-table-scan

2
推荐指数
1
解决办法
366
查看次数