أي شيء أسرع من العد (1) من Tablea للعثور على عدد الصفوف؟

StackOverflow https://stackoverflow.com/questions/3759817

  •  04-10-2019
  •  | 
  •  

سؤال

هل هناك أي شيء يمكننا من خلاله الحصول على لا. من الصفوف في جدول بدلاً من استخدام العد (1). علاوة على ذلك ، هناك حالتان:

أ) عندما نريد الحصول على لا. من الصفوف في طاولة.

ب) عندما نريد فقط أن نعرف ما إذا كان هناك صف واحد على التوالي.

شكرا مقدما.

هل كانت مفيدة؟

المحلول

أ) يمكنك الحصول على عدد صف الجدول من جداول النظام ، مثال واحد كما هو الحال مع URI Dimant منشور المدونة هنا.

ب) سأستخدم دائمًا:

IF EXISTS(SELECT * FROM YourTable)

نصائح أخرى

ب) عندما نريد فقط معرفة ما إذا كان هناك صف واحد على الأقل.

SELECT TOP 1 myField FROM myTable [WHERE .....]

لمعرفة عدد جميع الصفوف في الجدول دون مسحها يمكنك استخدامها

select SUM(row_count) AS row_count
from sys.dm_db_partition_stats
where object_id = object_id('dbo.tblName')
    and index_id < 2

لست متأكدًا مما إذا كان هناك أي تحذيرات بهذا النهج. (من المفترض أنه قد يتضمن إما عدد السجلات غير الملتزمة أو لا تتضمن التغييرات التي تم إجراؤها في معاملتك الحالية)

ب) يولد LINQ-to-SQL

EXISTS (SELECT NULL FROM Table....)

أ) لا

ب) يمكنك استخدام exists الوظيفة ، والتي تتحقق فقط إذا كانت هناك نتيجة ولا تحصل في الواقع على النتيجة.

هناك هذا النهج ، باستخدام sysobjects و sysindexes:

عد الصفوف لجميع الجداول مرة واحدة

لقد عملت بشكل جيد بالنسبة لي في الماضي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top