Search Results

Search found 10602 results on 425 pages for 'media queries'.

Page 194/425 | < Previous Page | 190 191 192 193 194 195 196 197 198 199 200 201  | Next Page >

  • Suitable Ubuntu distribution

    - by Dr AMD
    I need help choosing a suitable distrbution for my PC. I am using an HP d530 CMT with: ?• CPU Type: Intel Pentium 4, 3000 MHz (15 x 200) ?• Motherboard Chipset: Intel Springdale-G i865G ?• System Memory: 1015 MB (PC3200 DDR SDRAM) ?• Video Adapter: Intel(R) 82865G Graphics Controller (96 MB) ?• 3D Accelerator: Intel Extreme Graphics 2 ?• Audio Adapter: Analog Devices AD1981B(L) @ Intel 82801EB ICH5 - AC'97 Audio Controller ?• Network Adapter: Broadcom NetXtreme Gigabit Ethernet I have tried to install Ubuntu 13.10 and 12.04 LTS. Everything is OK on Ubuntu 12.04 except, that the video card was not recognized and the media player, YouTube,etc. did not work properly.

    Read the article

  • Facing problem with "gtk.RESPONSE_OK" in the simple-player quickly tutorial

    - by sumit_gt
    I am fairly new to both quickly and Python. I am facing several problems while learning to use quickly from the following tutorial on the Ubuntu developers site: http://developer.ubuntu.com/resources/app-developer-cookbook/multimedia/creating-a-simple-media-player/ The following error I'm unable to understand: Traceback (most recent call last): File "/home/sumit/Sumit/simple-player/simple_player/SimplePlayerWindow.py", line 36, in on_openbutton_clicked if response==gtk.RESPONSE_OK: NameError: global name 'gtk' is not defined I realize that I am supposed to import something, so I tried to add import gtk which it didn't work and it gave the following error: from gtk import _gtk /usr/lib/python2.7/dist-packages/gtk-2.0/gtk/__init__.py:40: Warning: g_type_get_qdata: assertion `node != NULL' failed from gtk import _gtk I have followed every step of the tutorials so far. But there is no mention of any other imports other that "prompts" and "os". Please help. Contribution of Agmenor, facing the same problem: I also tried to replace the text if response == gtk.RESPONSE_OK: by if response == Gtk.RESPONSE_OK: (notice the capital G). This gives another error: AttributeError: 'gi.repository.Gtk' object has no attribute 'RESPONSE_OK'

    Read the article

  • June Edition - Oracle Database Insider

    - by jgelhaus
    Now available.  The June edition of the Oracle Database Insider includes: NEWS June 10: Oracle CEO Larry Ellison Live on the Future of Database Performance At a live webcast on June 10 at Oracle’s headquarters, Oracle CEO Larry Ellison is expected to announce the upcoming availability of Oracle Database In-Memory, which dramatically accelerates business decision-making by processing analytical queries in memory without requiring any changes to existing applications. Read More New Study Confirms Capital Expenditure Savings with Oracle Multitenant A new study finds that Oracle Multitenant, an option of Oracle Database 12c, drives significant savings in capital expenditures by enabling the consolidation of a large number of databases on the same number or fewer hardware resources. Read More VIDEO Oracle Database 12c: Multitenant Environment with Tom Kyte Tom Kyte discusses Oracle Multitenant, followed by a demo of the multitenant architecture that includes moving a pluggable database (PDB) from one multitenant container database to another, cloning a PDB, and creating a new PDB.  and much more.

    Read the article

  • Multiple Object Instantiation

    - by Ricky Baby
    I am trying to get my head around object oriented programming as it pertains to web development (more specifically PHP). I understand inheritance and abstraction etc, and know all the "buzz-words" like encapsulation and single purpose and why I should be doing all this. But my knowledge is falling short with actually creating objects that relate to the data I have in my database, creating a single object that a representative of a single entity makes sense, but what are the best practises when creating 100, 1,000 or 10,000 objects of the same type. for instance, when trying to display a list of the items, ideally I would like to be consistent with the objects I use, but where exactly should I run the query/get the data to populate the object(s) as running 10,000 queries seems wasteful. As an example, say I have a database of cats, and I want a list of all black cats, do I need to set up a FactoryObject which grabs the data needed for each cat from my database, then passes that data into each individual CatObject and returns the results in a array/object - or should I pass each CatObject it's identifier and let it populate itself in a separate query.

    Read the article

  • Can't load some domain

    - by Grzegorz
    I can't load some domain on my ubuntu 13.04: youtube.com translate.google.com drive.google.com vk.com When I ping them they are responding: PING youtube.com (217.119.79.59) 56(84) bytes of data. 64 bytes from non-registered.plix.pl (217.119.79.59): icmp_req=1 ttl=59 time=21.9 ms 64 bytes from non-registered.plix.pl (217.119.79.59): icmp_req=2 ttl=59 time=20.5 ms 64 bytes from non-registered.plix.pl (217.119.79.59): icmp_req=3 ttl=59 time=21.3 ms --- youtube.com ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev = 20.544/21.255/21.914/0.560 ms But they don't load in any browser like firefox, chrome, lynx. They load in my media centre on XBMCbuntu.

    Read the article

  • Include Method Extension for IObjectSet What about the mocks?

    Eager loading with Entity Framework depends on the special ObjectQuery.Include method. We’ve had that from Day 1 (first version of ef). Now we use ObjectSets in EF4 which inherit from ObjectQuery (thereby inheriting Include) and also implement IObjectSet. IObjectSet allows us to break the queries apart from ObjectQuery and ObjectContext so we can write persistent ignorant, testable code. But IObjectSet doesn’t come with the Include method and you have to create an extension method to...Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here.

    Read the article

  • SQL SERVER – Curious Case of Disappearing Rows – ON UPDATE CASCADE and ON DELETE CASCADE – Part 1 of 2

    - by pinaldave
    Social media has created an Always Connected World for us. Recently I enrolled myself to learn new technologies as a student. I had decided to focus on learning and decided not to stay connected on the internet while I am in the learning session. On the second day of the event after the learning was over, I noticed lots of notification from my friend on my various social media handle. He had connected with me on Twitter, Facebook, Google+, LinkedIn, YouTube as well SMS, WhatsApp on the phone, Skype messages and not to forget with a few emails. I right away called him up. The problem was very unique – let us hear the problem in his own words. “Pinal – we are in big trouble we are not able to figure out what is going on. Our product details table is continuously loosing rows. Lots of rows have disappeared since morning and we are unable to find why the rows are getting deleted. We have made sure that there is no DELETE command executed on the table as well. The matter of the fact, we have removed every single place the code which is referencing the table. We have done so many crazy things out of desperation but no luck. The rows are continuously deleted in a random pattern. Do you think we have problems with intrusion or virus?” After describing the problems he had pasted few rants about why I was not available during the day. I think it will be not smart to post those exact words here (due to many reasons). Well, my immediate reaction was to get online with him. His problem was unique to him and his team was all out to fix the issue since morning. As he said he has done quite a lot out in desperation. I started asking questions from audit, policy management and profiling the data. Very soon I realize that I think this problem was not as advanced as it looked. There was no intrusion, SQL Injection or virus issue. Well, long story short first - It was a very simple issue of foreign key created with ON UPDATE CASCADE and ON DELETE CASCADE.  CASCADE allows deletions or updates of key values to cascade through the tables defined to have foreign key relationships that can be traced back to the table on which the modification is performed. ON DELETE CASCADE specifies that if an attempt is made to delete a row with a key referenced by foreign keys in existing rows in other tables, all rows containing those foreign keys are also deleted. ON UPDATE CASCADE specifies that if an attempt is made to update a key value in a row, where the key value is referenced by foreign keys in existing rows in other tables, all of the foreign key values are also updated to the new value specified for the key. (Reference: BOL) In simple words – due to ON DELETE CASCASE whenever is specified when the data from Table A is deleted and if it is referenced in another table using foreign key it will be deleted as well. In my friend’s case, they had two tables, Products and ProductDetails. They had created foreign key referential integrity of the product id between the table. Now the as fall was up they were updating their catalogue. When they were updating the catalogue they were deleting products which are no more available. As the changes were cascading the corresponding rows were also deleted from another table. This is CORRECT. The matter of the fact, there is no error or anything and SQL Server is behaving how it should be behaving. The problem was in the understanding and inappropriate implementations of business logic.  What they needed was Product Master Table, Current Product Catalogue, and Product Order Details History tables. However, they were using only two tables and without proper understanding the relation between them was build using foreign keys. If there were only two table, they should have used soft delete which will not actually delete the record but just hide it from the original product table. This workaround could have got them saved from cascading delete issues. I will be writing a detailed post on the design implications etc in my future post as in above three lines I cannot cover every issue related to designing and it is also not the scope of the blog post. More about designing in future blog posts. Once they learn their mistake, they were happy as there was no intrusion but trust me sometime we are our own enemy and this is a great example of it. In tomorrow’s blog post we will go over their code and workarounds. Feel free to share your opinions, experiences and comments. Reference: Pinal Dave (http://blog.sqlauthority.com) Filed under: PostADay, SQL, SQL Authority, SQL Query, SQL Server, SQL Tips and Tricks, T SQL, Technology

    Read the article

  • Only MKV format available in HandBrake

    - by Steve Ellis
    I am running Ubuntu 14.04 LTS 32 bit. I have installed HandBrake rev5474 (i686), which I believe is the latest, and the Ubuntu Restricted Extras. I am able to play DVDs via VLC but when it comes to ripping them, so that I can back them up to my Twonky media server, I have issues. I launch HandBrake and find that the only format available for me to select is MKV. When I used to run Handbrake on this machine while I was running Ubuntu 13.10 and lower I had no issues and **lots of formats (including MP4 which is what I'm really after) but since reformating and installing 14.04 I've had this issue. Any help would be much appreciated.

    Read the article

  • Ubuntu 12.04.1 LTS USB not being detected after formatting with Startup Disk Creator

    - by Zach
    sudo fdisk -l lists the drive, however, I cannot find it in the file explorer. Disk /dev/sda: 250.1 GB, 250059350016 bytes 255 heads, 63 sectors/track, 30401 cylinders, total 488397168 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000d871e Device Boot Start End Blocks Id System /dev/sda1 * 2048 486322175 243160064 83 Linux /dev/sda2 486324222 488396799 1036289 5 Extended /dev/sda5 486324224 488396799 1036288 82 Linux swap / Solaris Disk /dev/sdb: 8195 MB, 8195480064 bytes 253 heads, 62 sectors/track, 1020 cylinders, total 16006797 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00027ae4 Device Boot Start End Blocks Id System /dev/sdb1 * 62 15999719 M 7999829 c W95 FAT32 (LBA) Manually mounting it produces this error message :~$ sudo mount -t vfat /dev/sdb1 /media/external -ouiduid=1000,gid=1000,utf8,dmask=027,fmask=137 mount: wrong fs type, bad option, bad superblock on /dev/sdb1, missing codepage or helper program, or other error In some cases useful info is found in syslog - try dmesg | tail or so Is the usb toast?

    Read the article

  • Top Innovations for Sales Managers

    - by divya.malik
    Sales managers are always looking for ways to motivate their troops as well as make themselves more effective and productive. Here is a small X’mas present for those folks that are looking for some effective tips. Our friends at Selling Power magazine recently wrote an interesting blog post with top 10 best practices for sales managers. Here we go: Harness social media Strategically align marketing campaigns with sales efforts Establish a customer-centric sales process Realize ROI with CRM Embrace online collaboration Improve accuracy in sales forecasting and pipeline metrics Coach for sales success Leverage mobile technology Focus on sales enablement Improve sales performance and compensation management We have a complete suite of sales applications, to help increase sales revenues, sales productivity as well as to improve your sales execution. You can find more details here. For more details on the SellingPower blog post click here. Happy Holidays to you and your family.

    Read the article

  • Low graphics mode on Ubuntu 12.04 with Intel Graphics

    - by NightShadeQueen
    When I boot, my computer just tells me it can't detect graphic card (or something else) settings and it has to use the low graphics mode. Then it gives me four choices, but doesn't let me choose any of them. I can get my computer to boot by going to some sort of terminal mode and then typing sudo gdm. The other graphics manager I have is lightdm. I originally had the nVidia propriety driver, and I've tried bumblebee. Mobile Intel Graphics Media Accelerator 4500M is my graphics card. Is there any way to fix this so I can use lightdm again?

    Read the article

  • How to Get Pro Features in Windows Home Versions with Third Party Tools

    - by Chris Hoffman
    Some of the most powerful Windows features are only available in Professional or Enterprise editions of Windows. However, you don’t have to upgrade to Windows Professional to use these powerful features – use these free alternatives instead. These features include the ability to access your desktop remotely, encrypt your hard drive, run Windows XP in a window, change advanced settings in group policy, use Windows Media Center, run an operating system off a USB stick, and more. How to Get Pro Features in Windows Home Versions with Third Party Tools HTG Explains: Is ReadyBoost Worth Using? HTG Explains: What The Windows Event Viewer Is and How You Can Use It

    Read the article

  • bash profile works for user but not sudo

    - by user564448
    I've modified my .profile to include a folder if a flash drive is plugged in. When running the command as the user it works fine but tells me the scrip must be run by sudo (this is what i want). However, when i try to run it with sudo i get "command not found" I have a symlink (flash) in my /var/www folder pointing to my /media/flash drive. (nevermind this setup since is just for dev) this is my user's .profile : # set PATH so it includes flash scripts if [ -d "/var/www/flash/scripts" ] ; then PATH="/var/www/flash/scripts:$PATH" fi when trying to run as sudo i get: sudo: script: command not found any ideas?

    Read the article

  • Programmers that need a lot of "Outside Help" - Is this bad?

    - by Zanneth
    Does anyone else think it's kind of tacky or poor practice when programmers use an unusual amount of libraries/frameworks to accomplish certain tasks? I'm working with someone on a relatively simple programming project involving geolocation queries. The guy seems like an amateur to me. For the server software, this guy used Python, Django, and a bunch of other crazy libraries ("PostGIS + gdal, geoip, and a few other spatial libraries" he writes) to create it. He wrote the entire program in one method (in views.py, nonetheless facepalm), and it's almost unreadable. Is this bad? Does anyone else think that this is really tacky and amateurish? Am I the only minimalist out there these days?

    Read the article

  • jWIN JC-AM100 not working

    - by Tony Kilgore
    jWIN JC-AM100 not working in skype, i just see black and the little light that comes on the webcam showing its in use does not come on ether, but it works with cheese but its upside down. =[ lsusb: Bus 002 Device 012: ID 093a:2620 Pixart Imaging, Inc. Bus 002 Device 002: ID 04d9:1702 Holtek Semiconductor, Inc. Bus 002 Device 005: ID 046d:c05a Logitech, Inc. Optical Mouse M90 Bus 002 Device 004: ID 058f:9360 Alcor Micro Corp. 8-in-1 Media Card Reader Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub<

    Read the article

  • ubuntu cobbler server - importing distros

    - by Stu2000
    I setup and fully configured ubuntu-12.04-server machine with cobbler/dhcp running in about 10 minutes (compared to taking over an hour on centos 5.8). I discovered the cobbler import which appears to be useful. Does this remove the need to use a cobbler distro add? whenever I run a cobbler report after a successful import of ubuntu desktop iso: sudo cobbler import --name=Ubuntu --path=/mnt --breed=debian task started: 2012-12-13_163245_import task started (id=Media import, time=Thu Dec 13 16:32:45 2012) Found a debian/ubuntu compatible signature: pool adding distros avoiding symlink loop avoiding symlink loop avoiding symlink loop associating repos associating kickstarts *** TASK COMPLETE *** I just get the following (nothing): distros: ========== profiles: ========== systems: ========== repos: ========== images: ========== mgmtclasses: ========== packages: ========== files: ========== I was rather hoping that I wouldn't have to do the traditional copying of all files in /mnt to a new /distro directory and then perform a cobbler distro add --initrd=/path/to/inird --kernel=/path/to/kernel Maybe I am mistaken about what the import actually does for me. If someone could elaborate on what the import is actually for please do.

    Read the article

  • Share on Facebook does not show thumbnail images

    - by matt_tm
    I have a PHP application which has a "Share on Facebook" button that, On the development server shows the thumbnail images correctly and allows the user to select between them On the live server, it does NOT show the thumbnail images at all. The relevant portion of the .htaccess file is: # Set up caching on media files for 2 days <FilesMatch "\.(gif|jpg|jpeg|png|flv)$"> ExpiresDefault A172800 Header append Cache-Control "public" </FilesMatch> I'm using the exact same set of php files and .htaccess, but the server configuration is different. What could be causing this? Note that the text appears fine. Edit1 We are also doing some URL rewriting related to images in the .htaccess (on both servers): ... RewriteRule ^.*/content/image/(.*)$ content/image/$1 [L] ... RewriteRule ^.*/images/(.*)$ images/$1 [L] ... Would that be somehow making a difference? Images appear fine all throughout the site. (I posted this question earlier as http://stackoverflow.com/questions/4142597/share-on-facebook-does-not-show-thumbnail-images) )

    Read the article

  • Livre blanc de l'outillage de Qt Quick, traduit par Thibaut Cuvelier et Louis du Verdier

    Qt Quick correspond à une collection de technologies qui sont conçues pour aider les développeurs à créer des interfaces utilisateur intuitives, fluides et à l'apparence moderne, le genre d'interfaces graphiques de plus en plus utilisées sur les téléphones portables, lecteurs média, set-top boxes et autres appareils portables. Qt Quick est constitué d'un ensemble riche d'éléments d'interface utilisateur, d'un langage déclaratif pour la représentation d'interfaces utilisateur, et d'un moteur d'exécution de langage. Une collection d'API C++ est utilisée pour intégrer ces caractéristiques de haut niveau avec les applications Qt classiques. La version 2.1 de l'environnement de développement (EDI) Qt Creator introduit des outils utiles au développement d'applications Qt Quick. Ce livre blanc do...

    Read the article

  • Score Minimalist Wallpapers at Simple Desktops

    - by Jason Fitzpatrick
    If you’re looking for some ultra-minimal desktop wallpapers, the curated selection at Simply Desktops has subtle wallpapers for all tastes. Whether you’re looking for something geeky, musically inspired, or abstract, there’s a plethora of minimalist wallpapers to choose from. Curated by Tim Watson, the growing collection showcases wallpapers with an emphasis on minimal design. In addition to browsing the collection via the web you can even automate the process of swapping your minimalist wallpapers by downloading the–currently Mac-only–Simple Desktops app. Hit up the link below to browse their archives, then post a link to your favorite in the comments! Simple Desktops How to Sync Your Media Across Your Entire House with XBMC How to Own Your Own Website (Even If You Can’t Build One) Pt 2 How to Own Your Own Website (Even If You Can’t Build One) Pt 1

    Read the article

  • Backbone.js, Rails and code duplication

    - by Matteo Pagliazzi
    I'm building a web app and I need a JS framework like Backbone.js to work with my backend rovided by Rails that mostly return JSON objects after DB queries. Searching on the web I've discovered Backbone which seems to be complete, quite populare and actively developed but I've noticed that a lot of things done by Backbone are simply a duplicte of the works done by Rails: for example validation and models. My idea of "perfect" (for my actual needs) JS mvc (it can't be called mvc but i don't have any other names) is something really simple that has a function for each action in my Rails controller that are triggered by a specific event (user/hash changes, click on a button...) and send requests to the server that respond with a JSON object then I'll load a template or execute some JS code. Do you have any concern/suggestion about my idea? Do you know some "micro" js framework like what i have described? If you have worked with backone.js + rails what can you suggest me?

    Read the article

  • How can I set access to mounted TrueCrypt volumes, and how can I dismount them on logout?

    - by d3vid
    I have TrueCrypt setup to mount volumes when I log into my work account. However, when I log out and log in to another account, those volumes are still mounted and available on the other account. How can I set access to those volumes? I don't want all users to be able to access them once they're mounted. (They mounted at /media/volumename - do I just set permissions on the folder "volumename" before mounting?) How can I tell TrueCrypt to dismount them when I log out?

    Read the article

  • Can't get my Blue Snowflake Mic to work

    - by TheNerdAL
    It was working fine when I bought it. I think it was an update or something that made it stop. I don't think the Mic is broken, at least I hope not. Can anyone help? Please? I need it before tommorrow. I'm working on a video. I get this when I check the terminal for what USB devices are connected: Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 003 Device 004: ID 2525:8912 Bus 003 Device 003: ID 058f:9360 Alcor Micro Corp. 8-in-1 Media Card Reader Bus 003 Device 002: ID 056a:00d2 Wacom Co., Ltd Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Thanks.

    Read the article

  • Why use link classes in oql instead of classes that contain links

    - by Isaac
    itop abstracts its very complex database design with an object query language (oql). For this there are classes definded, like 'Ticket' and 'Server'. Now a Ticket usually is linked to a Server. In my naive way I would give the Ticket class an attribute 'affected_server_list', where I could reference the affected servers. itop does it different: neither Servers nor Tickets know of each other. Instead there is a class 'linkTicketToServer', which provides the link between the two. The first thing I noticed is that it makes oql queries more complex. So I wondered why they designed it this way. One thing that occured to me is that it allows for more flexiblity, in that I can add links without modifying the original classes. Is this allready why one would implement it this way, or are there other reasons for this kind of design?

    Read the article

  • How to clone a VirtualBox Disk

    - by [email protected]
     How to clone a VirtualBox DiskCopying the image of Virtual Disk (.vdi file) is a convenient way to duplicate the disk, in cases you want to avoid re-installing an operating system from scratch. However, simply copying the .vdi file into another location will make a verbatim copy of the virtual disk, including the UUID of the disk. If you try to add the copy in the Virtual Media Manager, you will get an error like this:In this case, you have to do is to clone the vdi disk: cd C:\Program Files\Sun\VirtualBox\C:\Program Files\Sun\VirtualBox>vboxmanage clonevdi G:\VMWARES\Database\11GR2onOEL5forVbox\11GR2_OEL5_32GB.vdi G:\VMWARES\Database\11GR2onOEL5forVbox\OEL5_32GB.vdi$ VBoxManage clonevdi Master.vdi Clone.vdiIn case you receive a error like this. It means that the disk is already a copy of other VirtualBox Disk.In that case you chould change the UUID before to clone the Disk.Follow the steps given here in order to do that.

    Read the article

  • Cardinality Estimation Bug with Lookups in SQL Server 2008 onward

    - by Paul White
    Cost-based optimization stands or falls on the quality of cardinality estimates (expected row counts).  If the optimizer has incorrect information to start with, it is quite unlikely to produce good quality execution plans except by chance.  There are many ways we can provide good starting information to the optimizer, and even more ways for cardinality estimation to go wrong.  Good database people know this, and work hard to write optimizer-friendly queries with a schema and metadata (e.g. statistics) that reduce the chances of poor cardinality estimation producing a sub-optimal plan.  Today, I am going to look at a case where poor cardinality estimation is Microsoft’s fault, and not yours. SQL Server 2005 SELECT th.ProductID, th.TransactionID, th.TransactionDate FROM Production.TransactionHistory AS th WHERE th.ProductID = 1 AND th.TransactionDate BETWEEN '20030901' AND '20031231'; The query plan on SQL Server 2005 is as follows (if you are using a more recent version of AdventureWorks, you will need to change the year on the date range from 2003 to 2007): There is an Index Seek on ProductID = 1, followed by a Key Lookup to find the Transaction Date for each row, and finally a Filter to restrict the results to only those rows where Transaction Date falls in the range specified.  The cardinality estimate of 45 rows at the Index Seek is exactly correct.  The table is not very large, there are up-to-date statistics associated with the index, so this is as expected. The estimate for the Key Lookup is also exactly right.  Each lookup into the Clustered Index to find the Transaction Date is guaranteed to return exactly one row.  The plan shows that the Key Lookup is expected to be executed 45 times.  The estimate for the Inner Join output is also correct – 45 rows from the seek joining to one row each time, gives 45 rows as output. The Filter estimate is also very good: the optimizer estimates 16.9951 rows will match the specified range of transaction dates.  Eleven rows are produced by this query, but that small difference is quite normal and certainly nothing to worry about here.  All good so far. SQL Server 2008 onward The same query executed against an identical copy of AdventureWorks on SQL Server 2008 produces a different execution plan: The optimizer has pushed the Filter conditions seen in the 2005 plan down to the Key Lookup.  This is a good optimization – it makes sense to filter rows out as early as possible.  Unfortunately, it has made a bit of a mess of the cardinality estimates. The post-Filter estimate of 16.9951 rows seen in the 2005 plan has moved with the predicate on Transaction Date.  Instead of estimating one row, the plan now suggests that 16.9951 rows will be produced by each clustered index lookup – clearly not right!  This misinformation also confuses SQL Sentry Plan Explorer: Plan Explorer shows 765 rows expected from the Key Lookup (it multiplies a rounded estimate of 17 rows by 45 expected executions to give 765 rows total). Workarounds One workaround is to provide a covering non-clustered index (avoiding the lookup avoids the problem of course): CREATE INDEX nc1 ON Production.TransactionHistory (ProductID) INCLUDE (TransactionDate); With the Transaction Date filter applied as a residual predicate in the same operator as the seek, the estimate is again as expected: We could also force the use of the ultimate covering index (the clustered one): SELECT th.ProductID, th.TransactionID, th.TransactionDate FROM Production.TransactionHistory AS th WITH (INDEX(1)) WHERE th.ProductID = 1 AND th.TransactionDate BETWEEN '20030901' AND '20031231'; Summary Providing a covering non-clustered index for all possible queries is not always practical, and scanning the clustered index will rarely be optimal.  Nevertheless, these are the best workarounds we have today. In the meantime, watch out for poor cardinality estimates when a predicate is applied as part of a lookup. The worst thing is that the estimate after the lookup join in the 2008+ plans is wrong.  It’s not hopelessly wrong in this particular case (45 versus 16.9951 is not the end of the world) but it easily can be much worse, and there’s not much you can do about it.  Any decisions made by the optimizer after such a lookup could be based on very wrong information – which can only be bad news. If you think this situation should be improved, please vote for this Connect item. © 2012 Paul White – All Rights Reserved twitter: @SQL_Kiwi email: [email protected]

    Read the article

< Previous Page | 190 191 192 193 194 195 196 197 198 199 200 201  | Next Page >