标签: optimization

使用SELECT查询加速UPDATE

我有两张桌子:

  • 表1有Episode和Code,Episode为distinct.
  • 表2有Episode和Code,但Episode并不明显(表中的其他字段,与任务无关,使每一行都是唯一的).

我希望将每个剧集的表1的代码复制到表2.目前执行此操作的代码如下:

UPDATE Table2
SET Table2.Code = (SELECT TOP 1 Code FROM Table1 WHERE Episode = Table2.Episode)
Run Code Online (Sandbox Code Playgroud)

这需要数小时和数小时.(我不确切知道多少小时,因为我在大约20小时的时候取消了它.)他们大桌子,但肯定有更快的方法吗?

sql-server optimization sql-server-2005

0
推荐指数
1
解决办法
755
查看次数

从TCPSocket读取在Ruby/Rails中很慢

我有这段简单的代码写入套接字,然后从服务器读取响应.服务器速度非常快(每次响应5ms).但是,尽管写入套接字很快 - 读取套接字的响应总是慢得多.有线索吗?

module UriTester
  module UriInfo
    class << self
      def send_receive(socket, xml)
#        socket = TCPSocket.open("service.server.com","2316")
        begin
        start = Time.now
          socket.print(xml)           # Send request
        puts "just printed the xml into socket #{Time.now - start}"
        rescue Errno::ECONNRESET
        puts "looks like there is an issue!!!"
          socket = TCPSocket.open("service.server.com","2316")
          socket.print(xml)           # Send request
        end
        response=""
        while (line =socket.recv(1024))
          response += line
          break unless line.grep(/<\/bcap>/).empty?
        end
        puts "SEND_RECEIVE COMPLETED. IN #{Time.now - start}"
#        socket.close
        response
      end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

谢谢!

optimization network-programming tcp ruby-on-rails

0
推荐指数
1
解决办法
1896
查看次数

优化点到球体测试的距离

我想测试一个点是否在球体的特定距离内.

所以你有这些变量......

Point3F spherePnt;
F32 sphereRadius;
Point3F testPnt;
Run Code Online (Sandbox Code Playgroud)

我可以...

F32 dist = ( spherePnt - testPnt ).len() - sphereRadius;
Run Code Online (Sandbox Code Playgroud)

如果dist为正,则它在半径之外,如果dist为负,则它在半径内.

或者作为避免len()函数中的平方根的优化,您可以尝试这个...

F32 dist = ( spherePnt - testPnt ).lenSquared() - ( sphereRadius * sphereRadius );
Run Code Online (Sandbox Code Playgroud)

好吧,这看起来像乍看之下,但显然它实际上给了我不正确的结果.

例如,给定的变量就像这样设置......

SpherePnt( 0, 0, 0 )
SphereRadius( 1 )
testPnt( 1, 1, 1 )
Run Code Online (Sandbox Code Playgroud)

取结果......

F32 dist = ( spherePnt - testPnt ).len() - sphereRadius;
F32 dist2 = mSqrt( ( spherePnt - testPnt ).lenSquared() - ( sphereRadius * sphereRadius ) );

dist = 0.7320508075688772935274463415059; …
Run Code Online (Sandbox Code Playgroud)

math optimization mathematical-optimization

0
推荐指数
1
解决办法
957
查看次数

可以使用哪些索引来改进此查询?

此查询选择特定日期范围内的所有唯一访问者会话:

select distinct(accessid) from accesslog where date > '2009-09-01'
Run Code Online (Sandbox Code Playgroud)

我有以下字段的索引:

  • ACCESSID
  • 日期
  • 其他一些领域

这是解释的样子:

mysql> explain select distinct(accessid) from accesslog where date > '2009-09-01';
+----+-------------+-----------+-------+----------------------+------+---------+------+-------+------------------------------+
| id | select_type | table     | type  | possible_keys        | key  | key_len | ref  | rows  | Extra                        |
+----+-------------+-----------+-------+----------------------+------+---------+------+-------+------------------------------+
|  1 | SIMPLE      | accesslog | range | date,dateurl,dateaff | date | 3       | NULL | 64623 | Using where; Using temporary |
+----+-------------+-----------+-------+----------------------+------+---------+------+-------+------------------------------+


mysql> explain select distinct(accessid) from accesslog;
+----+-------------+-----------+-------+---------------+----------+---------+------+---------+-------------+
| …
Run Code Online (Sandbox Code Playgroud)

mysql indexing optimization distinct

0
推荐指数
1
解决办法
203
查看次数

优化Java代码

我该如何优化此代码?我制作了IPFilter,我需要优化它.

package com.ipfilter;

import java.util.HashMap;
import java.util.Map;

/**
 *      IPFilter
 * 
 *      Loads given IP addresses to memory, so you can  easily check if ip addres has been blocked
 */

public class IPFilter {
        private Map<Integer, IPFilter> filter = new HashMap<Integer, IPFilter>();

        /**
         * Convert String ip address to Integer array and then calls add ip method
         * @param ip
         * @return
         */
        public void addIP(String ip)
        {
                int[] numbers = convert(ip);
                addIP(numbers, 0);
        }

        /**
         * Convert String ip …
Run Code Online (Sandbox Code Playgroud)

java optimization filtering ip-address micro-optimization

0
推荐指数
1
解决办法
1410
查看次数

优化查询运行时间太长

我使用toad for Oracle来运行一个运行时间太长的查询,有时超过15分钟.

该查询正在提取备忘录,这些备忘录将由经理批准.查询没有带回很多行.通常,当它运行时,它将返回大约30或40行.查询需要访问几个表以获取其信息,因此我使用了很多连接来获取此信息.

我在下面附上了我的查询.如果有人可以帮助优化这个查询,我会非常非常好.

查询:

SELECT (e.error_Description || DECODE(t.trans_Comment, 'N', '', '','', ' - ' || t.trans_Comment)) AS Title,
       t.Date_Time_Recorded AS Date_Recorded,
       DECODE(t.user_ID,0,'System',(SELECT Full_Name FROM employee WHERE t.user_Id = user_id)) AS Recorded_by,
           DECODE(t.user_ID,0, Dm_General.getCalendarShiftName(t.Date_Time_Recorded), (SELECT shift FROM employee WHERE t.user_Id = user_id)) AS Shift,
          l.Lot_Number AS entity_number,
          ms.Line_Num,
          'L' AS Entity_Type, 
           t.entity_id, l.lot_Id AS Lot_Id
      FROM DAT_TRANSACTION t
      JOIN ADM_ERRORCODES e ON e.error_id = t.error_id
      JOIN ADM_ACTIONS a ON a.action_id = t.action_id,
           DAT_LOT l
                 INNER JOIN Status s ON …
Run Code Online (Sandbox Code Playgroud)

sql oracle optimization plsql

0
推荐指数
1
解决办法
3561
查看次数

用于访问数据表记录的C#代码优化

我有数据表的成本问题.我需要用更聪明的代码替换代码.

我有一个数据表,样本值是这样的:

列:id,user_id,starttime,endtime

行样本:1,5,5.0.10.2009 08:00:00,05.10.2009 17:00

我的伪代码是

    function something()
    {
    for(int i=0;i<datatable.Rows.Length;i++)
    {
    if(Someobject.variable.Equals(dt.Rows[i][user_id].ToString()))
    {
    if(Date.Compare(somevariable,dt.Rows[i][starttime].ToString())!=0)
    {
    //Do something
    }
    }
    }
}
Run Code Online (Sandbox Code Playgroud)

就是这样的.数据表有超过一千行,当asp.net页面加载时,函数必须调用近一千次.

所以我必须改变它.

我考虑过使用字典,但似乎只需要两个变量.你有什么建议我的.

编辑:

我还没解决问题.这是相关的代码.提前致谢.

protected void RadScheduler_Randevu_TimeSlotCreated(object sender,Telerik.Web.UI.TimeSlotCreatedEventArgs e){

for (int i = 0; i < calismaSaatleridt.Rows.Count; i++)
{
    if (RadScheduler_Randevu.SelectedView.Equals(SchedulerViewType.DayView))
    {
        if (RadScheduler_Randevu.SelectedDate.ToShortDateString().Equals(Convert.ToDateTime(calismaSaatleridt.Rows[i]["calisma_baslangic"]).ToShortDateString()))
        {
            if (e.TimeSlot.Resource.Key.ToString().Equals(calismaSaatleridt.Rows[i]["hekim_id"].ToString()))
            {
                if (DateTime.Compare(e.TimeSlot.Start, Convert.ToDateTime(calismaSaatleridt.Rows[i]["calisma_baslangic"])) < 0 || DateTime.Compare(e.TimeSlot.End, Convert.ToDateTime(calismaSaatleridt.Rows[i]["calisma_bitis"])) > 0)
                {
                    e.TimeSlot.CssClass = "Disabled";
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

}

这是返回结果集的函数.

private DataTable calismaSaatiGetir(string yonetici_id)
    {
        SqlConnection connection …
Run Code Online (Sandbox Code Playgroud)

c# asp.net datatable optimization dictionary

0
推荐指数
1
解决办法
2356
查看次数

Java List的简化边界检查

是否有一个简单的方法/库来检查和调整参数以保持在列表边界内?

这是一个很长的样本:

if (fromIndex < 0) {
  fromIndex = 0;
}
if (fromIndex > list.size() - 1) {
  fromIndex = list.size() - 1;
}

if (toIndex < 0) {
  toIndex = 0;
}
if (toIndex > list.size() - 1) {
  toIndex = list.size() - 1;
}

list.subList(fromIndex, toIndex);
Run Code Online (Sandbox Code Playgroud)

我知道我可以移动list.size() - 1到变量并对索引检查执行提取方法以删除冗余代码.但对于这个简单的任务,它似乎仍然有点冗长.

java optimization list

0
推荐指数
1
解决办法
243
查看次数

如何减少访问文件的增长?

因此,在我的工作场所,他们有一个巨大的访问文件(与MS Access 2003和2007一起使用).文件大小约为1.2GB,因此打开文件需要一段时间.我们不能删除任何记录,我们有大约100多个表(每个月我们创建4个表,不要问!).如何改进这一点,即缩小文件大小?

optimization ms-access filesize

0
推荐指数
1
解决办法
1万
查看次数

有这样的C++优化吗?

例如

vector<string> a;

vector<string> b;

a.push_back("first");

b=a;
Run Code Online (Sandbox Code Playgroud)

是否会以某种方式进行优化

vector<string> b;

b.push_back("first");
Run Code Online (Sandbox Code Playgroud)

c++ optimization

0
推荐指数
1
解决办法
228
查看次数