Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Microsoft is giving away 50,000 FREE Microsoft Certification exam vouchers. Get Fabric certified for FREE! Learn more

Reply
pmscorca
Post Partisan
Post Partisan

Querying a KQL database in an efficient manner

Hi,

I've to design some queries against a KQL database, in an efficient manner.

In order to obtain as good as possible performances, is it better to write these queries in the KQL language or SQL one?

Moreover, using the SQL language to query the KQL db are there any best practices to follow in order to have optimal performances?

Thanks

 

1 ACCEPTED SOLUTION
v-junyant-msft
Community Support
Community Support

Hi @pmscorca ,

Thanks for lbendlin's reply!

For your first question:

is it better to write these queries in the KQL language or SQL one

It is better to use KQL instead of T-SQL, becasue the query environment offers limited support for T-SQL. The following table outlines the T-SQL statements and features that aren't supported or are partially supported:
https://learn.microsoft.com/zh-cn/kusto/query/t-sql?view=microsoft-fabric#coverage 

But in terms of query performance, they are about the same.

For your second question:

are there any best practices to follow in order to have optimal performances

I checked the official documentation and it is recommended that you use stored functions to minimize T-SQL code and improve performance.
https://learn.microsoft.com/zh-cn/kusto/query/t-sql?view=microsoft-fabric#run-stored-functions 

So I still recommend that you use KQL instead of T-SQL, unless you need to use some tool that doesn't support KQL.

Best Regards,
Dino Tao
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

View solution in original post

9 REPLIES 9
v-junyant-msft
Community Support
Community Support

Hi @pmscorca ,

Thanks for lbendlin's reply!

For your first question:

is it better to write these queries in the KQL language or SQL one

It is better to use KQL instead of T-SQL, becasue the query environment offers limited support for T-SQL. The following table outlines the T-SQL statements and features that aren't supported or are partially supported:
https://learn.microsoft.com/zh-cn/kusto/query/t-sql?view=microsoft-fabric#coverage 

But in terms of query performance, they are about the same.

For your second question:

are there any best practices to follow in order to have optimal performances

I checked the official documentation and it is recommended that you use stored functions to minimize T-SQL code and improve performance.
https://learn.microsoft.com/zh-cn/kusto/query/t-sql?view=microsoft-fabric#run-stored-functions 

So I still recommend that you use KQL instead of T-SQL, unless you need to use some tool that doesn't support KQL.

Best Regards,
Dino Tao
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

Hi, thanks for your reply.

I hope that a KQL database could offer a major support for T-SQL language.

In terms of query performance, is it better using the KQL language than T-SQL one or not?

I asked the second question because T-SQL language could be required from some customers.

 

I've noticed that running the same KQL query or the same T-SQL query more times the execution time changes: is it a normal behaviour?

Thanks

Hi @pmscorca ,

I have tested that the performance of KQL query and T-SQL query is almost the same. The official documentation does not provide much information on using T-SQL in KQL Database. I suggest you open a support ticket to get more detailed information and a dedicated Microsoft engineer will come to solve the problem for you.

The link of Power BI Support: Microsoft Fabric Support and Status | Microsoft Fabric

For how to create a support ticket, please refer to How to create a support ticket in Power BI - Microsoft Fabric Community


And to ask the engineers about your requirements to see if T-SQL query can be better supported in the future.

Best Regards,
Dino Tao

lbendlin
Super User
Super User

Hi, thanks for you reply but it does't answer to my question.

The answer is: Always use KQL

Hi thanks for your reply. Have you matched the execution time between a KQL query versus the corresponding SQL query?

Moreover, I've posted a second question.

The second question is this: using the SQL language to query the KQL db are there any best practices to follow in order to have optimal performances?

In order to help the community it is preferable to give a reply more discursive and not too concise. Thanks

Helpful resources

Announcements
MarchFBCvideo - carousel

Fabric Monthly Update - March 2025

Check out the March 2025 Fabric update to learn about new features.

Notebook Gallery Carousel1

NEW! Community Notebooks Gallery

Explore and share Fabric Notebooks to boost Power BI insights in the new community notebooks gallery.

April2025 Carousel

Fabric Community Update - April 2025

Find out what's new and trending in the Fabric community.

"); $(".slidesjs-pagination" ).prependTo(".pagination_sec"); $(".slidesjs-pagination" ).append("
"); $(".slidesjs-play.slidesjs-navigation").appendTo(".playpause_sec"); $(".slidesjs-stop.slidesjs-navigation").appendTo(".playpause_sec"); $(".slidesjs-pagination" ).append(""); $(".slidesjs-pagination" ).append(""); } catch(e){ } /* End: This code is added by iTalent as part of iTrack COMPL-455 */ $(".slidesjs-previous.slidesjs-navigation").attr('tabindex', '0'); $(".slidesjs-next.slidesjs-navigation").attr('tabindex', '0'); /* start: This code is added by iTalent as part of iTrack 1859082 */ $('.slidesjs-play.slidesjs-navigation').attr('id','playtitle'); $('.slidesjs-stop.slidesjs-navigation').attr('id','stoptitle'); $('.slidesjs-play.slidesjs-navigation').attr('role','tab'); $('.slidesjs-stop.slidesjs-navigation').attr('role','tab'); $('.slidesjs-play.slidesjs-navigation').attr('aria-describedby','tip1'); $('.slidesjs-stop.slidesjs-navigation').attr('aria-describedby','tip2'); /* End: This code is added by iTalent as part of iTrack 1859082 */ }); $(document).ready(function() { if($("#slides .item").length < 2 ) { /* Fixing Single Slide click issue (commented following code)*/ // $(".item").css("left","0px"); $(".item.slidesjs-slide").attr('style', 'left:0px !important'); $(".slidesjs-stop.slidesjs-navigation").trigger('click'); $(".slidesjs-previous").css("display", "none"); $(".slidesjs-next").css("display", "none"); } var items_length = $(".item.slidesjs-slide").length; $(".slidesjs-pagination-item > button").attr("aria-setsize",items_length); $(".slidesjs-next, .slidesjs-pagination-item button").attr("tabindex","-1"); $(".slidesjs-pagination-item button").attr("role", "tab"); $(".slidesjs-previous").attr("tabindex","-1"); $(".slidesjs-next").attr("aria-hidden","true"); $(".slidesjs-previous").attr("aria-hidden","true"); $(".slidesjs-next").attr("aria-label","Next"); $(".slidesjs-previous").attr("aria-label","Previous"); //$(".slidesjs-stop.slidesjs-navigation").attr("role","button"); //$(".slidesjs-play.slidesjs-navigation").attr("role","button"); $(".slidesjs-pagination").attr("role","tablist").attr("aria-busy","true"); $("li.slidesjs-pagination-item").attr("role","list"); $(".item.slidesjs-slide").attr("tabindex","-1"); $(".item.slidesjs-slide").attr("aria-label","item"); /*$(".slidesjs-stop.slidesjs-navigation").on('click', function() { var itemNumber = parseInt($('.slidesjs-pagination-item > a.active').attr('data-slidesjs-item')); $($('.item.slidesjs-slide')[itemNumber]).find('.c-call-to-action').attr('tabindex', '0'); });*/ $(".slidesjs-stop.slidesjs-navigation, .slidesjs-pagination-item > button").on('click keydown', function() { $.each($('.item.slidesjs-slide'),function(i,el){ $(el).find('.c-call-to-action').attr('tabindex', '-1'); }); var itemNumber = parseInt($('.slidesjs-pagination-item > button.active').attr('data-slidesjs-item')); $($('.item.slidesjs-slide')[itemNumber]).find('.c-call-to-action').attr('tabindex', '0'); }); $(".slidesjs-play.slidesjs-navigation").on('click', function() { $.each($('.item.slidesjs-slide'),function(i,el){ $(el).find('.c-call-to-action').attr('tabindex', '-1'); }); }); $(".slidesjs-pagination-item button").keyup(function(e){ var keyCode = e.keyCode || e.which; if (keyCode == 9) { e.preventDefault(); $(".slidesjs-stop.slidesjs-navigation").trigger('click').blur(); $("button.active").focus(); } }); $(".slidesjs-play").on("click",function (event) { if (event.handleObj.type === "click") { $(".slidesjs-stop").focus(); } else if(event.handleObj.type === "keydown"){ if (event.which === 13 && $(event.target).hasClass("slidesjs-play")) { $(".slidesjs-stop").focus(); } } }); $(".slidesjs-stop").on("click",function (event) { if (event.handleObj.type === "click") { $(".slidesjs-play").focus(); } else if(event.handleObj.type === "keydown"){ if (event.which === 13 && $(event.target).hasClass("slidesjs-stop")) { $(".slidesjs-play").focus(); } } }); $(".slidesjs-pagination-item").keydown(function(e){ switch (e.which){ case 37: //left arrow key $(".slidesjs-previous.slidesjs-navigation").trigger('click'); e.preventDefault(); break; case 39: //right arrow key $(".slidesjs-next.slidesjs-navigation").trigger('click'); e.preventDefault(); break; default: return; } $(".slidesjs-pagination-item button.active").focus(); }); }); // Start This code is added by iTalent as part of iTrack 1859082 $(document).ready(function(){ $("#tip1").attr("aria-hidden","true").addClass("hidden"); $("#tip2").attr("aria-hidden","true").addClass("hidden"); $(".slidesjs-stop.slidesjs-navigation, .slidesjs-play.slidesjs-navigation").attr('title', ''); $("a#playtitle").focus(function(){ $("#tip1").attr("aria-hidden","false").removeClass("hidden"); }); $("a#playtitle").mouseover(function(){ $("#tip1").attr("aria-hidden","false").removeClass("hidden"); }); $("a#playtitle").blur(function(){ $("#tip1").attr("aria-hidden","true").addClass("hidden"); }); $("a#playtitle").mouseleave(function(){ $("#tip1").attr("aria-hidden","true").addClass("hidden"); }); $("a#play").keydown(function(ev){ if (ev.which ==27) { $("#tip1").attr("aria-hidden","true").addClass("hidden"); ev.preventDefault(); return false; } }); $("a#stoptitle").focus(function(){ $("#tip2").attr("aria-hidden","false").removeClass("hidden"); }); $("a#stoptitle").mouseover(function(){ $("#tip2").attr("aria-hidden","false").removeClass("hidden"); }); $("a#stoptitle").blur(function(){ $("#tip2").attr("aria-hidden","true").addClass("hidden"); }); $("a#stoptitle").mouseleave(function(){ $("#tip2").attr("aria-hidden","true").addClass("hidden"); }); $("a#stoptitle").keydown(function(ev){ if (ev.which ==27) { $("#tip2").attr("aria-hidden","true").addClass("hidden"); ev.preventDefault(); return false; } }); }); // End This code is added by iTalent as part of iTrack 1859082
Top Solution Authors